pen*_*tix 3 c++ for-loop priority-queue c++11
像这样定义我的priority_queue,
priority_queue<int> parts(start, start+N, less<int>());
Run Code Online (Sandbox Code Playgroud)
以下代码将无法编译
for(int t : parts){
...
}
Run Code Online (Sandbox Code Playgroud)
这引出了我的问题:
在C++ 11中,是否允许基于范围的循环 std::priority_queue
?
通常,允许使用基于范围的for循环迭代哪些结构?
我知道我可以做同样的事情:
while(!parts.empty()){
cout << "Next element: " << parts.top() << endl;
parts.pop();
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过队列进行迭代?
不,std::priority_queue
不支持基于范围的for循环.
基于范围的for循环适用于数组以及具有begin()
和end()
成员函数的类.这包括C++标准库中的所有容器以及std::string
(及其basic_string
表兄弟),但不包括作为容器适配器的堆栈,队列或优先级队列,并且不公开迭代器.