【发布时间】:2014-01-11 14:47:22
【问题描述】:
我正在尝试在我的项目中寻找 std::vector 的替代品,我发现 std::queue 是我正在寻找的。p>
我有很多使用range-based loop 进行迭代的函数,我正在尽可能地对其进行维护。
我尝试在std::queue 中编译range-based loop,但我得到的只是编译错误
错误:没有匹配函数调用'begin(std::queue&)'
std::queue 不支持范围基循环吗?
我确实尝试了Google search,但没有找到任何与此相关的主题。
更新:
我的编译器是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 << ", ";
【问题讨论】:
-
对于未来的问题,您可以尝试在http://ideone.com 等在线编译环境中构建您的测试用例,如果您有编译器问题,它会立即通知您。在这里,ideone.com/kIln7G 它给出了你提到的同样的错误
-
@mr5 好的,gcc 4.8.1 和 clang++ 3.4 在你的例子中都失败了。
-
@Morwenn 那是无效的代码吗?
-
@mr5 实际上,
std::queue没有方法begin()。当我告诉你它有效时,我将std::queue混淆为std::deque。很抱歉。