Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengulangi `std::queue` dalam C ?
Lelaran Over std::queue
Dalam C , std::queue ialah bekas pertama masuk dahulu (FIFO) . Secara lalai, ia menggunakan std::deque sebagai struktur data asasnya. Walaupun ini menjadikannya cekap untuk operasi enqueue dan dequeue, ia memberikan cabaran apabila ia datang untuk mengulangi kandungan baris gilir.
Dokumentasi menyatakan bahawa "tiada kelas kontena ditentukan untuk kelas baris gilir tertentu." Ini bermakna kita tidak boleh mengakses secara langsung deque asas dan mengulanginya. Walau bagaimanapun, terdapat beberapa cara untuk mengatasi had ini.
Menggunakan Range-Based For Loop
Jika anda mempunyai sokongan C 11, anda boleh menggunakan julat -berasaskan untuk gelung untuk mengulangi elemen baris gilir. Pendekatan ini mengambil kesempatan daripada fakta bahawa std::queue menyediakan iterator yang boleh digunakan untuk melintasi elemen.
<code class="cpp">std::queue<int> queue; // Populate the queue... for (const int& element : queue) { std::cout << element << " "; }</code>
Menggunakan Iterator Standard
Jika anda tidak mempunyai sokongan C 11, anda masih boleh menggunakan lelaran standard untuk lelaran ke atas baris gilir. Kod berikut menunjukkan perkara ini:
<code class="cpp">std::queue<int> queue; // Populate the queue... std::queue<int>::iterator it; for (it = queue.begin(); it != queue.end(); ++it) { std::cout << *it << " "; }</code>
Nota:
Walaupun mungkin untuk mengakses deque asas secara langsung, ia tidak disyorkan kerana ia boleh menyebabkan tidak ditentukan tingkah laku dan rasuah data. Sebaliknya, gunakan salah satu kaedah yang diterangkan di atas untuk mengulangi kandungan baris gilir.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi `std::queue` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!