在另一个地图中存储和重用地图的迭代器值有多少安全?

时间:2018-12-04 07:40:56

标签: c++ stl

在另一个地图中存储和重复使用地图的迭代器值有多少安全?

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);

}

1 个答案:

答案 0 :(得分:1)

std::map返回的迭代器会通过各种操作而无效,如果您不调用这些操作,则可以存储这些迭代器,如果这样做将使它们无效,并且使用它们的行为将是不确定的。

阅读documentation,并在方法说明中查找“迭代器无效”之类的词。