Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menterbalikkan Lelaran Dengan Mudah Melalui Bekas Menggunakan C 11 Berasaskan Julat Untuk Gelung?

Bagaimanakah Saya Boleh Menterbalikkan Lelaran Dengan Mudah Melalui Bekas Menggunakan C 11 Berasaskan Julat Untuk Gelung?

DDD
DDDasal
2024-12-02 15:58:101013semak imbas

How Can I Easily Reverse Iterate Through a Container Using C  11 Range-Based For-Loops?

Untuk Gelung Berasaskan Julat Terbalik C 11

Menyalakan pada bekas dalam susunan terbalik dengan gelung berasaskan julat memerlukan pembalikan arah iterator. Walaupun iterator eksplisit menyediakan penyelesaian yang mudah, adakah terdapat penyesuai kontena mudah yang menawarkan kefungsian ini?

Penyesuai Leulang Terbalik

Nasib baik, perpustakaan Boost menyertakan penyelesaian: boost ::penyesuai::terbalik. Penyesuai ini membalikkan susunan lelaran bekas, membolehkan gelung berasaskan julat untuk lelaran secara terbalik.

Contoh Penggunaan

Pertimbangkan bekas integer:

std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 };

Untuk mengulangi bekas ini secara terbalik menggunakan gelung untuk berasaskan julat, gunakan penyesuai terbalik:

for (auto i : boost::adaptors::reverse(x))
    std::cout << i << '\n';

Ini akan mencetak elemen senarai dalam susunan terbalik.

Perbandingan dengan Lelaran Asal

Sebagai perbandingan, di sini ialah susunan lelaran asal tanpa penyesuai terbalik:

for (auto i : x)
    std::cout << i << '\n';

Ini akan mencetak elemen senarai dalam asalnya pesanan.

Kesimpulan

Penyesuai terbalik Boost menyediakan cara yang mudah untuk lelaran pada bekas dalam susunan terbalik menggunakan gelung berasaskan julat. Ini memudahkan kod dan membolehkan lelaran terbalik yang lebih ringkas dan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menterbalikkan Lelaran Dengan Mudah Melalui Bekas Menggunakan C 11 Berasaskan Julat Untuk Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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