c++11中,为什么可以用const_iterator删除map/multimap中的元素 50

c++stl中,const_iterator是被设计用来只读访问容器中的元素的,像在vector,list之类的容器中,是无法使用erase()删除掉const_iter... c++ stl中,const_iterator是被设计用来只读访问容器中的元素的,像在vector, list之类的容器中,是无法使用erase()删除掉const_iterator指向的元素的, 可是为什么在map/multimap中却可以?
看<stl_multimap.h> 中的源代码也确实有以下函数, 支持用const_iterator执行erase操作(似乎是从c++11起才支持这种做法), 而vector, list却没有这样的函数:
iterator
erase(const_iterator __position)
是有什么特殊缘故吗?

用的是GNU GCC 4.8.2(SGI STL)
展开
 我来答
匿名用户
2016-06-24
展开全部
for(std::map>::iteratoriter=m_mapName.begin();iter!=m_mapName.end();){std::vector&vec=iter->second;//对vec可以进行任意的操作,删除一个元素自然不在话下}
追问
你好,我想问的是const_iterator(e.g. std::map::const_iterator), 普通的iterator当然可以进行任意操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-06-24
展开全部
#include#include#includeintmain(){mapwords;map::iteratorit=words.begin();for(;it!=words.end();++it)coutfirstsecond<
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式