Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membalikkan Bagi Gelung Berasaskan Julat dalam C Menggunakan Boost.Range?
Untuk Gelung Berasaskan Julat Songsang dalam C 11 dengan Boost.Julat
Dalam C , untuk gelung berasaskan julat ialah alat berkuasa untuk mengulangi bekas. Walau bagaimanapun, secara lalai, ia berulang dari awal bekas hingga akhir. Adakah terdapat cara untuk menterbalikkan arah ini?
Iterators Songsang dengan Range-Based For-Loop
Satu cara untuk melelaran ke atas bekas secara terbalik ialah menggunakan rbegin() dan rend() fungsi ahli. Walau bagaimanapun, ini memerlukan penggunaan iterator eksplisit dan boleh menjadi sukar digunakan untuk senario yang kompleks:
for (auto i = c.rbegin(); i != c.rend(); ++i) { ... }
Penyesuai Songsang Boost.Range
Nasib baik, Boost.Range menyediakan penyelesaian elegan dengan rangsangan::penyesuai::penyesuai terbalik. Penyesuai ini membungkus bekas dan membalikkan arah lelarannya. Ini membolehkan penyepaduan yang lancar dengan gelung berasaskan julat:
for (auto& i : boost::adaptors::reverse(c)) { ... }
Contoh Penggunaan
Berikut ialah contoh penggunaan boost::adaptors::reverse to iterate atas senarai secara terbalik pesanan:
#include <list> #include <iostream> #include <boost/range/adaptor/reversed.hpp> int main() { std::list<int> x{2, 3, 5, 7, 11, 13, 17, 19}; for (auto i : boost::adaptors::reverse(x)) { std::cout << i << '\n'; } for (auto i : x) { std::cout << i << '\n'; } return 0; }
Output:
19 17 13 11 7 5 3 2 2 3 5 7 11 13 17 19
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membalikkan Bagi Gelung Berasaskan Julat dalam C Menggunakan Boost.Range?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!