map<CString, vector<CString>> 删除vector中某一个元素
for (std::map<CString, std::vector<CString>>::iterator iter=m_mapName.begin();iter!=m_mapName.end();)
{
if (nIndex==nCount)
{
m_listBoxName.DeleteString(nIndex);
m_mapName.erase(iter++);
}else
{
iter++;
}
nCount++;
}
我是这么遍历的,但是这样子把整个的iter都删除了
那对这个vec怎么操作呢?
我直接写的vec.earse(iter1) iter1是遍历vec时的迭代器。会出现系统错误
std::vector vec=iter->second;
for (vector::iterator iter1=vec.begin();iter1!=vec.end();iter1++)
{
vec.erase(iter1);
}
你这是要清空vector,直接调用vec的clear()不就完了,循环删除迭代器必然出现崩溃。如果是删除某一个元素,找到那个元素对应的迭代器删除不会有问题
追问嗯这个问题我解决了。不是vec的问题。是iter的问题嗯。
本回答被提问者采纳