Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membalikkan Bagi Gelung Berasaskan Julat dalam C Menggunakan Boost.Range?

Bagaimanakah Saya Boleh Membalikkan Bagi Gelung Berasaskan Julat dalam C Menggunakan Boost.Range?

Mary-Kate Olsen
Lepaskan: 2024-12-08 18:11:15
asal
681 orang telah melayarinya

How Can I Reverse a Range-Based For-Loop in C   Using 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) { ... }
Salin selepas log masuk

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)) { ... }
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output:

19
17
13
11
7
5
3
2
2
3
5
7
11
13
17
19
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan