gpt4 book ai didi

c++ - std::queue 的基于范围的循环

转载 作者:可可西里 更新时间:2023-11-01 16:01:43 24 4
gpt4 key购买 nike

我试图在我的项目中寻找 std::vector 的替代品,我发现 std::queue 就是我要找的为。

我有很多使用 range-based loop 进行迭代的函数,我正在尽可能地维护它。

我尝试在 std::queue 中编译一个 range-based loop 但我得到的只是编译错误

error: no matching function for call to 'begin(std::queue&)'

std::queue 不支持范围基循环吗?

我确实尝试了 Google 搜索,但没有找到与此相关的任何主题。

更新:

我的编译器是 GCC v4.7.1

-std=c++11 已启用

这是错误的测试代码:

std::queue<int> Q;

for (int i = 0;i < 10; ++i)
Q.push(i);

std::cout << "\nqueue contains: ";
for (auto i : Q)
std::cout << i << ", ";

最佳答案

嗯,答案实际上很简单:std::queue 中没有函数 begin() 并且 std 也没有任何重载::begin 也接受一个 std::queue。你可以看看 documentation .

核心问题是 std::queue 并不意味着被迭代。它的存在是为了满足其他需求。如果您真的需要迭代它,您应该只使用支持迭代并且您的代码对其有效的底层容器(默认情况下 std::deque)。

关于c++ - std::queue 的基于范围的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20742595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com