***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************

使用 cocos2d-x 中的 Vector的时候,

在删除某个对象的时候出现了个错误,非常崩溃啊.....

Vector<Bullet*>* bullets;

// 遍历每一个bullet,让他们自己更新
for ( auto it = bullets->begin();it!=bullets->end();it++)
{
(*it)->update(); // 获取子弹生命。若子弹已经消亡,释放
if( (*it)->getLife() ) { Bubblet* b = *it; bubblets->eraseObject(b);
this->removeChild( b,true );
} }

就会错误发生——vector iterators incompatible。

也许是我 打开的方式不正确。于是用C++11方法:

Vector<Bullet*> bullets;

for( auto& b : bullets )  {
b->update(); if( b->getLife() ) {
bubblets.eraseObject(b);
this->removeChild(b,true);
} }

还是不行。。。

找了非常久,发现,

据说是由于,迭代器遍历的时候。假设把当前的给删除了,那么后面就乱套了,无法继续进行下去了,

所以。会崩溃。

于是乎。假设通过迭代器来遍历,就这么改:

// 遍历每一个bullet。让他们自己更新
for ( auto it = bullets->begin();it!=bullets->end();)
{
(*it)->update(); // 获取子弹生命,若子弹已经消亡,释放
if( (*it)->getLife() ) { Bubblet* b = *it; it = bubblets->eraseObject(b);
this->removeChild( b,true );
}
else {
it++;
} }

迭代器的移动,不再靠循环。而是靠推断语句。

可惜。通过C++11方法的遍历,我还没想到要怎么改。。。

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************

Cocos2d-x Vector——vector iterators incompatible的更多相关文章

  1. Solve Error Debug Assertion Failed Expression vector iterators incompatible Using PCL in Release Mode of VS2010

    When using PCL 1.4.0 in the release mode building under VS2010, we might sometime get the error &quo ...

  2. vector iterators incompatible

    字面翻译迭代器类型不兼容 今天同事遇到的这个问题算是一个习惯性写法的问题.描述一下代码: struct Track{}; class BaseTrack { - std::vector<Trac ...

  3. vector::erase returns incompatible iterator in debug build

    关于std::vector中erase的用法http://www.cplusplus.com/reference/vector/vector/erase/ #include <vector> ...

  4. (原)使用vectot的.end()报错:iterators incompatible

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5070672.html 参考网址: http://blog.csdn.net/yxnyxnyxnyxny ...

  5. vector< vector<int> >类似于二维数组

    vector< vector<int> > intVV; vector<int> intV; int i,j; ;i<;++i){ intV.clear(); ...

  6. NDK GDB 中打印vector , vector<vector <> >

    在android上进行native开发的时候,我们需要用NDK-GDB 对native code进行调试,其中很麻烦的是,我使用的NDK版本是4.0,该版本还不支持用NDK-GDB直接打印vector ...

  7. 对多维向量vector<vector<int> > vec进行操作

    直接写作vector<vector<int> > vec在VC++6.0下编译不过改做:    typedef std::vector<int> ROW;    s ...

  8. 2016.6.24——vector<vector<int>>【Binary Tree Level Order Traversal】

    Binary Tree Level Order Traversal 本题收获: 1.vector<vector<int>>的用法 vector<vector<int ...

  9. vector vector int 初始化

    方法一: vector<vector<int>>array=(2,vector<int>()); array[0].push_back(1); array[i].p ...

随机推荐

  1. 【01】报错:webpack 不是内部或不可执行命令

    [02] webpack 不是内部或不可执行命令 一般来安装完之后是可以直接执行的你可以执行 webpack -v 或者是 webpack --help   这样的就是正确的,我的问题的解决办法是 将 ...

  2. Android App性能自动化评测方法

    前言 App运行在设备上的性能表现也是质量保障的一个重要环节.因此,当我们确保了基本功能的准确之后,还需要有一定的方法评测App在不同设备上的性能表现.本文将从性能指标,评测方法,自动化体系建设等三个 ...

  3. Leetcode 337.大家结舍III

    打家劫舍III 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根".除了"根"之外,每栋房子有且只有 ...

  4. hdu 1536 sg (dfs实现)

    S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. 分析nginx日志常用的命令总结

    1. 利用grep ,wc命令统计某个请求或字符串出现的次数 比如统计GET /app/kevinContent接口在某天的调用次数,则可以使用如下命令: cat /usr/local/nginx/l ...

  6. Java统计程序运行时间

    代码如下: 第一种是以毫秒为单位计算的. long startTime = System.currentTimeMillis();    //获取开始时间 doSomething();    //测试 ...

  7. Hadoop 3.1.0 在 Ubuntu 16.04 上的安装过程

    安装过程主要参考官方文档: http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster. ...

  8. Spring-IOC源码解读2.3-BeanDefinition的注册

    在DefaultListAbleBeanFactory中通过一个HashMap持有载入的BeanDefinition信息 ,这个HashMap的定义在DefaultListAbleBeanFactor ...

  9. Lucky and Good Months by Gregorian Calendar(poj 3393)

    大致题意: 科普文一篇,文章80%都是无用信息,因为都是常识,但是又不得不看,因为有20%是常人不知道的历史常识. 定义: Goog month : 该月第一个工作日为星期一的月份 Luckly mo ...

  10. STL学习笔记(二) vector和string

    条款13:vector.string优先于动态分配数组 string是basic_string<char>的类型定义许多string的背后实现都采用了引用计数的技术,可以消除不必要的内存拷 ...