***************************************转载请注明出处: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. Linux下dpkg的用法

    转自:http://blog.csdn.net/fireblue1990/article/details/52627952 dpkg是一个Debian的一个命令行工具,它可以用来安装.删除.构建和管理 ...

  2. shell的case-esac

    case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令.case语句格式如下: ...

  3. AWR报告中Parse CPU to Parse Elapsd%的理解

    AWR报告中Parse CPU to Parse Elapsd%的理解   原文自:http://dbua.iteye.com/blog/827243   Parse CPU to Parse Ela ...

  4. 开源中国+soucetree

    参考链接:http://www.cocoachina.com/programmer/20151012/13682.html 1.创建一个工程

  5. 【bzoj4383】[POI2015]Pustynia 线段树优化建图+差分约束系统+拓扑排序

    题目描述 给定一个长度为n的正整数序列a,每个数都在1到10^9范围内,告诉你其中s个数,并给出m条信息,每条信息包含三个数l,r,k以及接下来k个正整数,表示a[l],a[l+1],...,a[r- ...

  6. BZOJ 3611 [Heoi2014]大工程 ——虚树

    虚树第二题.... 同BZOJ2286 #include <map> #include <cmath> #include <queue> #include < ...

  7. BZOJ2337 [HNOI2011]XOR和路径 【概率dp + 高斯消元】

    题目 题解 突然get到这样路径期望的题目八成是高斯消元 因为路径上的dp往往具有后效性,这就形成了一个方程组 对于本题来说,直接对权值dp很难找到突破口 但是由于异或是位独立的,我们考虑求出每一位的 ...

  8. hihocoder #1290 : Demo Day

    传送门 #1290 : Demo Day 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You work as an intern at a robotics star ...

  9. Android SurfaceView与View

    SurfaceView介绍 SurfaceView是视图(View)的继承类,这个视图里面内嵌了一个专门用于绘制的Surface.你可以控制这个Surface的格式和尺寸,而SurfaceView控制 ...

  10. 动态添加radiogroup

    private LinearLayout layout; //布局 , 可以在xml布局中获得 private RadioGroup group ; //点选按钮组 public void onCre ...