c++MFC中,怎么删除 map<CString, vector<CString>> vector中某一个元素
map<CString,vector<CString>>删除vector中某一个元素for(std::map<CString,std::vector<CString>>:...
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都删除了 展开
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都删除了 展开
2个回答
展开全部
for (std::map<CString, std::vector<CString>>::iterator iter=m_mapName.begin();iter!=m_mapName.end();)
{
std::vector<CString> & vec = iter->second;
// 对vec可以进行任意的操作,删除一个元素自然不在话下
}
{
std::vector<CString> & vec = iter->second;
// 对vec可以进行任意的操作,删除一个元素自然不在话下
}
更多追问追答
追问
那对这个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()不就完了,循环删除迭代器必然出现崩溃。如果是删除某一个元素,找到那个元素对应的迭代器删除不会有问题
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询