返回信息流简单写一下吧:
vector<int> ivec(10, 10);
vector<int>::iterator it1 = ivec.begin(); //都知道,正确
vector<int>::iterator &it2 = ivec.begin(); //编译出错
const vector<int>::iterator &it3 = ivec.begin(); //正确
为什么会这样呢?
刚开始我认为可能是因为begin()返回的是const迭代器,所以第二句编译出错,结果编译以下语句时却能正常通过,说明不是这个原因
++ivec.begin();
这是一条镜像帖。来源:北邮人论坛 / cpp / #32021同步于 2009/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]弱问有关C++容器迭代器初始化问题
lovesai
2009/11/24镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
iterator begin() { return start; }
iterator在vector中定义为value_type*,就是普通的指针
第二行得改成const引用
肯定是返回右值啊,可是这又有什么关系呢?
所以我写的第三行就是加了一个const引用就编译成功了,我就是纳闷为什么加const就行,不加就不行?
【 在 Raiden 的大作中提到: 】
: iterator begin() { return start; }
: iterator在vector中定义为value_type*,就是普通的指针
: 第二行得改成const引用