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

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

Linda Hamilton
Lepaskan: 2024-10-29 02:21:30
asal
910 orang telah melayarinya

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

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

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!

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