Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengulangi `std::queue` dalam C ?

Bagaimanakah Saya Boleh Mengulangi `std::queue` dalam C ?

Linda Hamilton
Linda Hamiltonasal
2024-10-29 02:21:30896semak imbas

How Can I Iterate Over a `std::queue` in 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!

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