经常使用map和vector,但是没有深入研究
map.erase(iter);//没有返回值
map.erase(iter->first);//有返回值成功返回1,失败返回0
vector没有下面的删除方式
vector.erase(*iter);
从map和vector中删除元素时有所不同
for(iter = m_MapSocket.begin();iter != m_MapSocket.end();iter++)
{
pcT3 = iter->second;
if(pcT3 != NULL)
{
if(1 == pcT3->n)
{
//m_MapSocket.erase(iter);
int nRet = m_MapSocket.erase(iter->first);
cout<<"erase::"<<nRet<<endl;
}
}
}
for(;viter != vector.end();)
{
if(*viter == 1)
{
//pIntVec->erase(ite);
//ite --;//如果没有此操作。将会跳过删除后紧跟的一个元素
ite = pIntVec->erase(ite);
}
else
viter++;
}
其中的奥妙自己去体会吧