c++ - 在另一个地图中存储和重用地图的迭代器值有多安全?
问题描述
在另一个地图中存储和重用地图的迭代器值有多安全?
map<BYTE,vector<connections*>*> mconnections1;//sorting connections based on device key.
for (map<Device*,vector<connections*>>::iterator it=m_eip.m_mvpConnections.begin(); it!=m_eip.m_mvpConnections.end(); ++it)
mConnections1[it->first->DEVICE_KEY]=&it->second;
for (map<BYTE,vector<connections*>*>::iterator it=mConnections1.begin(); it!=mConnections1.end(); ++it)
{
for(unsigned int i=0;i<it->second->size();i++) it->second->at(i)->Write(&fp);
}
解决方案
返回的迭代器std::map
被各种操作无效,如果你不调用这些操作,那么你可以存储迭代器,如果你这样做,它们将变得无效并且使用它们将是未定义的行为。
阅读文档并在方法描述中查找诸如“迭代器无效”之类的词。