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都删除了
展开
 我来答
jellycgl
推荐于2016-06-26 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:891万
展开全部
for (std::map<CString, std::vector<CString>>::iterator iter=m_mapName.begin();iter!=m_mapName.end();)

{
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()不就完了,循环删除迭代器必然出现崩溃。如果是删除某一个元素,找到那个元素对应的迭代器删除不会有问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zpgsb
2015-07-28 · TA获得超过453个赞
知道小有建树答主
回答量:552
采纳率:72%
帮助的人:284万
展开全部
nIndex和nCount 是怎么定义的? 还有map和vector,你是要删除map里的某一个vector里的某一个值?还是要删除map里的某一个vector?如果是前者 你在vector里还要for循环一次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式