私は次のように使用しboost::unordered_map
ています
typedef boost::shared_ptr<WriterExeciter> PtrWriter;
typedef std::list<PtrWriter> PtrList;
boost::unordered_map<std::pair<unsigned int, unsigned long long>, PtrList> Map
Map instrMap;
今PtrList
、ループ内のタイプのリストにいくつかの変更を加えています
for(auto it = instrMap.begin(); it != instrMap.end(); ++it)
{
auto key = it->first();
auto list& = it->second();
//Make some change to an element in list
if(list.empty())
{
instMap.erase(key);
}
}
リストを変更すると、instrMap の反復子が無効になりますか?
要素を消去すると、消去された要素を指す反復子が無効になります。これが問題を引き起こさないようにコードを変更するにはどうすればよいですか?
it++
の代わりに使用すると++it
役立ちますか?
ありがとう