首页 > 解决方案 > 在另一个地图中存储和重用地图的迭代器值有多安全?

问题描述

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

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

}

标签: c++stl

解决方案


返回的迭代器std::map被各种操作无效,如果你不调用这些操作,那么你可以存储迭代器,如果你这样做,它们将变得无效并且使用它们将是未定义的行为。

阅读文档并在方法描述中查找诸如“迭代器无效”之类的词。


推荐阅读