我使用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
帮助?
谢谢