Ari*_*Ari 5 c++ algorithm queue stl find
我正在使用STL队列在图形上实现BFS(广度优先搜索).如果队列中不存在该节点,我需要在队列中推送一个节点.但是,STL队列不允许迭代其元素,因此我不能使用STL查找功能.
我可以为每个节点使用一个标志来标记它们,只有在标志为false时才推送它们,但是,我需要多次运行BFS,每次我必须重置所有标志,所以我结束了使用计数器而不是标志,但我仍然想知道是否有一种在队列中查找项目的标准方法.
Fre*_*Foo 6
我假设你在BFS中实现了"封闭集"的概念?这样做的标准方法是简单地维护已经遇到的单独std::set或std::unordered_set元素.这样,你得到O(lg n)或O(1)查找,而在队列中迭代,如果它被支持,则需要O(n)时间.
std::set
std::unordered_set
归档时间:
14 年 前
查看次数:
12112 次
最近记录: