Lelaran Songsang dalam Range-Based for-Gelung dengan C 11
Dalam C , bagi-gelung berasaskan julat menyediakan cara yang mudah untuk berulang melalui unsur-unsur bekas. Walau bagaimanapun, tiada penyesuai bekas terbina dalam yang boleh menterbalikkan arah iterator, menjadikannya mencabar untuk melelaran ke atas bekas dalam susunan terbalik.
Konsep: Penyesuai Bekas
Sebelum meneroka penyelesaian, adalah penting untuk memahami konsep penyesuai kontena. Ini ialah objek yang membalut bekas dan memberikan pandangan yang diubah suai bagi elemennya. Penyesuai boleh menapis, mengubah atau sebaliknya memanipulasi elemen yang dikembalikan oleh bekas asas.
Penyelesaian: Penyesuai terbalik Boost
Untuk membalikkan arah iterator dan mendayakan lelaran terbalik dalam gelung berasaskan julat, kami boleh memanfaatkan rangsangan::penyesuai::penyesuai terbalik daripada Boost C Perpustakaan. Penyesuai ini membalut bekas dan mengembalikan jujukan terbalik elemennya.
Contoh
Pertimbangkan contoh berikut:
#include <list> #include <iostream> #include <boost/range/adaptor/reversed.hpp> int main() { std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 }; // Iterate in reverse order for (auto i : boost::adaptors::reverse(x)) std::cout << i << '\n'; // Iterate in forward order for (auto i : x) std::cout << i << '\n'; }
Dalam contoh ini , penyesuai terbalik digunakan untuk mengulangi senarai x dalam susunan terbalik. Outputnya ialah:
19 17 13 11 7 5 3 2
Nota: Rangsangan::adaptors::reverse adapter ialah sebahagian daripada Boost C Libraries, iaitu koleksi perpustakaan sumber terbuka yang boleh dimuat turun dan disepadukan ke dalam projek C sedia ada.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengundurkan Lelaran Melalui Bekas Menggunakan C 11 Berasaskan Julat untuk Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!