私はこのイテレータループを持っています、
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 の既存のメンバーを変更します。
2つの質問があります
- it->second をポインタとして渡すのは悪いことですか?
- このコンテナを反復処理する最良の方法は何ですか?
ありがとうございました。
編集:
このようにコンテナの要素にアクセスしますか
nodes[intpair(x, y)]
ConnectNode 関数内でこの問題が発生しますか?
edit2 はい、そうです。
何故ですか?どうすればそれを回避できますか?