2015-04-30 54 views
1

我有一個while循環,我想用一個std/boost算法替代(主要是爲了我的學習,沿着Sean Parent的no-raw-loops maxim的路線)。用std/boost算法替換C++ while循環

std::queue q; 
while (! q.empty()) { 
    auto front = q.front(); 
    q.pop(); 
    do_stuff_with_front(); 
    potentially_insert_more_into_q(); 
} 

正如你所看到的,我有條件地在循環中排入更多的元素;認爲迷宮遍歷。什麼std/boost算法可能適合這個?

回答

7

我想不出任何算法或替代方法,它會比您已經編寫的while循環更清晰。我記得所有標準算法都可以在固定範圍內工作,並且由於您的代碼添加了與標準算法接口不一致的元素。

+0

+ Afaik,所有的算法都使用迭代器,它們在插入時失效。您需要重新初始化每個插入的迭代器。 OP可以嘗試做一個這樣的抽象。 – Carcigenicate