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) 展开
看<stl_multimap.h> 中的源代码也确实有以下函数, 支持用const_iterator执行erase操作(似乎是从c++11起才支持这种做法), 而vector, list却没有这样的函数:
iterator
erase(const_iterator __position)
是有什么特殊缘故吗?
用的是GNU GCC 4.8.2(SGI STL) 展开
2个回答
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<
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询