迭代 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中文網其他相關文章!