首頁 >後端開發 >C++ >如何在 C 中迭代'std::queue”?

如何在 C 中迭代'std::queue”?

Linda Hamilton
Linda Hamilton原創
2024-10-29 02:21:30896瀏覽

How Can I Iterate Over a `std::queue` in C  ?

迭代 std::queue

在 C 中,std::queue 是先進先出 (FIFO) 容器。預設情況下,它使用 std::deque 作為其底層資料結構。雖然這使得入隊和出隊操作變得高效,但在迭代隊列內容時卻提出了挑戰。

文件指出「沒有為特定隊列類別指定容器類別」。這意味著我們無法直接存取底層雙端佇列並對其進行迭代。但是,有幾種方法可以解決此限制。

使用基於範圍的 For 迴圈

如果您有 C 11 支持,則可以使用範圍基於 for 迴圈來迭代佇列的元素。這種方法利用了 std::queue 提供可用於遍歷元素的迭代器這一事實。

<code class="cpp">std::queue<int> queue;

// Populate the queue...

for (const int& element : queue) {
  std::cout << element << " ";
}</code>

使用標準迭代器

如果您沒有 C 11 支持,您仍然可以使用標準迭代器來迭代隊列。以下程式碼示範了這一點:

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

注意:

雖然可以直接存取底層雙側佇列,但不建議這樣做,因為它可能導致未定義行為和資料損壞。相反,使用上述方法之一來迭代隊列的內容。

以上是如何在 C 中迭代'std::queue”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn