Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengundurkan Lelaran Melalui Bekas Menggunakan C 11 Berasaskan Julat untuk Gelung?

Bagaimanakah Saya Boleh Mengundurkan Lelaran Melalui Bekas Menggunakan C 11 Berasaskan Julat untuk Gelung?

Patricia Arquette
Patricia Arquetteasal
2024-12-14 13:34:12422semak imbas

How Can I Reverse Iterate Through a Container Using C  11's Range-Based for-Loops?

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!

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