mwbr.net
当前位置:首页 >> stD Const itErAtor >>

stD Const itErAtor

前一个是标准库定义好的,一个是你自己定义的. 通过简单的代码区别,更能说明问题,希望你能明白 vector ivec; vector::const_iterator citer1 = ivec.begin(); const vector::iterator citer2 = ivec.begin(); *citer1 = 1; //error *citer2 = 1; ...

编译器已经提示了,加上typename typedef list::iterator iterator; typedef list::const_iterator const_iterator; 改为 typedef typename list::iterator iterator; typedef typename list::const_iterator const_iterator; 因为list本身就是...

一个是迭代器指针 一个是迭代器

你定义List是个模板类,T必须用具体的类型来实例化,比如T实例化成int List list = List::Iterator begin = list.begin() 当然你也可以自定义一个类型来实例化 class MyType { ...... } List list = List::Iterator begin = list.begin();

#include template class AA { public: AA(std::map const& aaMap_) :aaMap(aaMap_) {} typename std::map::const_iterator begin() { return aaMap.begin(); } typename std::map::const_iterator end() { return aaMap.end(); } private:

const 迭代器呢,你把它理解为 指向对象的 常指针,即指针是常量 const_iterator 迭代器呢,你把它理解为 指向 常对象 的指针,即指针指向的对象是常量

iter和el,不相容,一个是map、一个是vector vector::iterator result = find( el.begin( ), el.end( ), e); //查找 if ( result == el.end( ) ) //没找到 cout

for(std::map>::iteratoriter=m_mapName.begin();iter!=m_mapName.end();){std::vector&vec=iter->second;//对vec可以进行任意的操作,删除一个元素自然不在话下}

我用VS2008、VS2010、VS2013、GCC都试了一下,确实VS2008、VS2010编译出错,但是VS2013编译成功了(我也很纳闷为什么成功,从标准库给出的原型来看程序应该...

对啊 改成 for(typename vector::const_iterator it = cont.begin();it!=cont.end();it++)

网站首页 | 网站地图
All rights reserved Powered by www.mwbr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com