2015-04-30 27 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