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