【发布时间】:2014-12-06 06:44:44
【问题描述】:
像这样定义我的priority_queue,
priority_queue<int> parts(start, start+N, less<int>());
以下代码无法编译
for(int t : parts){
...
}
这让我产生疑问:
在 C++11 中,是否允许基于范围的 for 循环 std::priority_queue?
一般来说,哪些结构可以使用基于范围的 for 循环进行迭代?
我知道我可以做几乎相同的事情:
while(!parts.empty()){
cout << "Next element: " << parts.top() << endl;
parts.pop();
}
仍然可以遍历队列吗?
【问题讨论】:
-
不过,这不是一回事。 for 循环将遍历队列并使其保持原样(这通常不是优先级队列的用途),但 while 循环会将其清空。
-
@FredLarson +1 表示“这通常不是优先级队列的用途”;这正好回答了我的问题。
标签: c++ c++11 for-loop priority-queue