向列表添加项和迭代器问题
Adding Items to List and Iterator Problems
尝试实现宽度优先搜索。
我测试的图是下面的4<-2<-1->3(意思是1是根,1连接到2,2连接到4。3只连接1).
我不明白为什么当iter_queue指向2时,后面的整个循环被跳过。
提示吗?谢谢你。
#include <iostream>
#include <list>
enum state{white=1, grey, black};
struct node
{
int index;
int state = white;
std::list<node> neighbors;
};
bool search(node n1, node n2)
{
using namespace std;
std::list<node> queue;
queue.push_back(n1);
auto iter_queue = queue.begin();
while(iter_queue!=queue.end())
{
auto iter1=iter_queue->neighbors.begin();
while(iter1!=iter_queue->neighbors.end())
{
if(iter1->index == n2.index)
{
return true;
} else if(iter1->state!=black)
{
if(iter1->state==white){
iter1->state=grey;
queue.push_back(*iter1);
}
}
++iter1;
}
iter_queue->state = black;
queue.pop_front();
iter_queue=queue.begin();
}
return false;
}
在结构体中使用包含每个子节点副本的列表。你需要使用指针。尝试使用当前节点指针跳过每个子节点:
Node* currNode;
std::list<node*> neighbors;
相关文章:
- ESP8266单片机矢量迭代器的C++问题
- 成员函数中的迭代器出现问题
- 迭代器的指针操作问题
- 为什么在这个C++问题中使用const_iterator而不仅仅是迭代器?
- std::filesystem::directory_迭代器链接器问题(C++17)
- 使用 find() 通过 std::set 的迭代器将不起作用。出了什么问题?
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- 调用模板函数的问题"No matching function for call"参数:迭代器、对象函数
- 迭代器的问题
- 无法理解迭代器的问题?
- 对于循环迭代器问题 c++
- 将MAP与一对用作C 迭代器问题中的键
- C++字符串的迭代器问题
- 模板变量作为unordered_map键,迭代器问题
- 映射迭代器问题.包括代码
- 链接列表帮助,迭代器问题
- 仅visual studio 2010中存在可延迟迭代器问题
- 向列表添加项和迭代器问题
- C++ 提升::p tr_vector<S>::迭代器问题
- C++删除字符串上的标点符号,擦除()/迭代器问题