[英]Iterating through std queue
我正在嘗試使用BOOST_FOREACH迭代std :: queue。 但是那個類中沒有迭代器導致我有一個錯誤:
std::queue<std::string> someList;
BOOST_FOREACH(std::string temp, someList)
{
std::cout << temp;
}
>no matching function for call to begin(...)
>no type named ‘iterator’ in ‘class std::queue<std::basic_string<char> >’
我需要的結構如下:第一個到來,第一個消失。
std::deque
支持在數據結構的開頭和結尾有效插入和刪除。 您可以使用push_back
和pop_front
手動執行隊列操作。
默認情況下,隊列在內部使用deque。 它是一個只暴露隊列操作的包裝器(因此你不能迭代它)。 我不久前問了一個類似的問題 ,最好的答案讓我很好地了解了std::queue
的實際用法。 一個人應該使用std::queue
因為一個人需要一個隊列,但要清楚地表明只有類似隊列的操作在給定的數據結構上是合法的。 聽起來你需要更多的自由,所以請使用帶有O(1)插入的deque,list或其他結構,並在兩端移除。
你可以使用帶有push_front和pop_back的std :: list
std::queue
是一個容器適配器。 它使用std::deque
作為默認的底層容器。 無法訪問此容器,因此不以任何方式進行迭代。
最好的方法是使用std::deque
或std::list
並自己管理隊列行為。 可能會在它周圍提供自己的包裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.