Vector和iterator的使用心得
来源:互联网 发布:游戏充值用什么软件 编辑:程序博客网 时间:2024/06/11 04:44
首先,Vector是cocos里面独有的,而vector是stl里的。而Vector这个东西,往往和迭代器一起使用,特别是通过迭代器来消除改变Vector中的元素的时候,就会出现一些错误。
下面的例子功能是在满足一定条件下,消除Vector中的元素,版本一的错误只有当Vector里面只有一个元素的时候才会发生,若有多个元素,那就会漏掉一些遍历的元素。
当只有一个元素的时候,it指向第一个元素,badboyArr.end()指向的是第一个元素后面的空。当执行 badboyArr.eraseObject((*it));后,badboyArr中已经木有元素了,所以it = badboyArr.begin();,这句话就是把it指向了badboyArr.end()。一次for循环完成后,会使得it++,这个时候,就导致it指向不该指的地方。
而用第二个while版本的时候,就没有这个问题了,因为删除元素后,执行了continue,这样,就避免了对it再一次的加1。
看栗子:
版本一
</pre><pre name="code" class="cpp"> for (it = badboyArr.begin(); it != badboyArr.end(); it++) { if ((*it)->getPositionY() > m_role->getPosition().y) { this->removeChild((*it), true); m_role->hit(); badboyArr.eraseObject((*it)); it = badboyArr.begin(); } }
版本二
it = badboyArr.begin(); while ( it != badboyArr.end()) { if ((*it)->getPositionY() > m_role->getPosition().y) { this->removeChild((*it), true); m_role->hit(); badboyArr.eraseObject((*it)); it = badboyArr.begin(); continue; } ++it; }
0 0
- Vector和iterator的使用心得
- vector iterator 的使用
- vector与iterator的使用
- vector中迭代器iterator的使用
- 容器vector和迭代器iterator的学习使用
- vector和iterator的使用,排序,打印,挑选偶数
- 容器vector和迭代器iterator+使用
- vector的iterator的错误使用
- vector的iterator的 使用复习
- C++ Vector的使用心得
- 关于迭代器vector::iterator的使用
- [积累]vector的详细使用, 包括iterator
- C++ Vector 与STL Iterator的使用
- vector容器中iterator的使用
- Vector push_back和迭代器iterator的冲突
- c++的vector和iterator实现
- vector<int>::iterator和vector<int*>::iterator还有vector<int>*的区别
- vector迭代器iterator使用
- 马虎的算式(蓝桥杯)
- Zen of Python
- 多元分布和狄利克雷分布
- 一年又一年----15年的Summary
- 线程本地存储(Windows和Linux) http://blog.csdn.net/wzhwho/article/details/6427596
- Vector和iterator的使用心得
- leetcode之Flatten Binary Tree to Linked List
- IOS开发—跳转到系统设置以及其他应用
- 文本分类学习笔记(5)- KNN
- CentOS6.5下编译Hadoop-2.7.2
- OSG例子讲解之osgautotransform
- 航电OJ-1874畅通工程续
- iOS个人整理23-可视化编辑2-StoryBoard,segue跳转,可视化自定义cell
- 【蓝桥杯】小学生的“进位”数