我有这个迭代器循环,
typedef boost::unordered_map<std::pair<int, int>, NavigationNode> NodesMap;
NodesMap nodes;
for (NodesMap::iterator it= nodes.begin(); it != nodes.end() ; ++it)
{
if(it->second.type == NavigationNodeType_Walkable)
{
ConnectNode(&it->second);
}
}
ConnectNode 函数似乎使迭代器无效。它在 NavigationNode 中推送新元素并修改 NavigationNode 的现有成员。
我有两个问题
- 传递它->秒作为指针不好吗?
- 遍历此容器的最佳方法是什么?
谢谢你。
编辑:
像这样访问容器的元素
nodes[intpair(x, y)]
ConnectNode函数内部会导致这个问题吗?
edit2 是的。
这是为什么?我将如何解决它?