fkjj.net
当前位置:首页 >> [C++ STL]这个向量迭代器问题,实在受不了了,程序简... >>

[C++ STL]这个向量迭代器问题,实在受不了了,程序简...

你在删除itorb之前,做了itora++;运算,但是在删除itorb之后,itora就失效了,现在的itora指向了原来的下一个位置。虽然在后来又做了itora--;运算,但是在if外面又有一次itora++;,所以你现在已经把第二个6也跳过去了。 你如果要坚持自己删除的...

iterator并不是真正的指针!!! iterator通过重载++运算符来实现对容器类中下一元素的访问,而且通过重载引用运算符(&)和解引用运算符(*)使iterator表现出指针的行为。 因此在语句 for(iterator iter=*.begin();iter < *.end();iter++) { ... }...

迭代器失效,有两个层面的意思, 1) 无法通过迭代器++,--操作遍历整个stl容器。记作: 第一层失效。 2) 无法通过迭代器存取迭代器所指向的内存。 记作: 第二层失效。 关于这个问题, 不同的容器对应的结果是不同的。 vector vector是个连续内存存储...

网上例子多了,自己去搜去,这个都要来知道上问!你一个做软件的要加强信息资料查询能力才行。自己去找吧。

迭代器不是“地址”,它是对象的一个逻辑的位置信息,不明白你所谓的“数组”什么意思,iterator当然指向的是单个对象 cin代表的是一个输入流,其能读入的东西当然也可以看作一个序列对象,因此也可以有逻辑地址。不要把“指针”“iterator”一定和链表...

这个是迭代器的特征,list通过实现迭代器从而可以实现迭代concept。具体请参考《Generic programming and the STL》一书(第一篇的第一章),STL作为一个基本完备的数据操作集,其设计理念和依据都非常抽象,想要理解有一定的难度,而且单单拿出...

不要这么写 vector no; int i; for(i=0;i

p = find_if(v.begin(),v.end(), isMinus); //从开始到结束全范围查找满足 isMinus 的节点 while (p !=v.end()) { //如果找到了, 计数+1 count++; p = find_if(p + 1, v.end(), isMinus); // 从找到的节点的后面直到结束继续找满足isMinus的节点

对于vector,有一个简单的规则,就是,push_back()后就不要再引用原来的迭代器,因为,它可能已经失效了。 下面是vector的大致实现。 template class Vector { public: Vector() : size_(0), space_(0), elem_(0) { } //ATTENTION : don't forge...

您看的书是不是c++ primer? 那本书上确实有这样的语句,但我觉得是编写错误的。 iterator所支持的-=操作应该是ite2 -= n;这里n是一个常量。 看看源码中的原型: __normal_iterator& operator-=(const difference_type& __n) { _M_current -= __n...

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