簡體   English   中英

priority_queue的基於范圍的for循環

[英]Range based for-loop for priority_queue

像這樣定義我的priority_queue,

priority_queue<int> parts(start, start+N, less<int>());

以下代碼無法編譯

for(int t : parts){
    ...
}

這使我產生疑問:

在C ++ 11中, std::priority_queue是否允許基於范圍的循環

通常,允許使用基於范圍的for循環迭代哪些結構?

我知道我可以做幾乎一樣的事情:

while(!parts.empty()){
    cout << "Next element: " << parts.top() << endl;
    parts.pop();
}

是否可以通過隊列進行迭代?

否, std::priority_queue不支持基於范圍的for循環。

基於范圍的for循環適用於具有begin()end()成員函數的數組和類。 這包括C ++標准庫中的所有容器以及std::string (及其basic_string cousins),但不包括作為容器適配器且不公開迭代器的堆棧,隊列或優先級隊列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM