cocos2dx 之Vector

先说Vector吧。
如果说C++的vector容器怎么用,如果我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里不过多阐述,也请大神绕路。
所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿Array 和Vector进行对比吧。


下面我就以创建 Sprite 精灵对象的容器为例介绍吧
1、创建

先创建两个精灵:

 

1. auto sp1 = Sprite::create("CloseNormal.png");
2. sp1->setPosition(Point(100,100));
3. this->addChild(sp1,1);
4.  
5. auto sp2 = Sprite::create("CloseSelected.png");
6. sp2->setPosition(Point(100,200));
7. this->addChild(sp2,1);

创建容器

 

 

1. Alpha:
2. auto sp_array = Array::create();
3. beta:
4. Vector<Sprite*> sp_vec;

2、将创建好的精灵添加进容器中

 

 

1. Alpha:
2. sp_array->addObject(sp1);
3. sp_array->addObject(sp2);
4.  
5.  
6. beta:
7. sp_vec.pushBack(sp1);//和 堆栈 一样一样的
8. sp_vec.pushBack(sp2);

3、获得容器中的大小

 

 

1. Alpha:
2. int count = sp_array->count();
3. beta:
4. int count = sp_vec.size();

4、获得容器中的精灵,并让这些元素都做统一的动作

 

 

01. Alpha:
02. for(int i=0;i<sp_array->count();i++)
03. {
04. auto sp = (Sprite*)sp_array->getObjectAtIndex(i);
05. sp->runAction(MoveTo::create(0.2f,Point(100,100)));
06. }
07. beta:
08. for(int i=0;i<sp_vec.size();i++)
09. {
10. auto sp = sp_vec.at(i);
11. sp->runAction(MoveTo::create(0.2f,Point(100,100)));
12. }

5、删除容器中的精灵

 

 

01. //如果是要删除容器中最后一个精灵的话:
02. Alpha:
03. sp_array->removeLastObject();
04. beta:
05. sp_vec.popBack();
06.  
07. //如果是直接删除对象:
08. Alpha:
09. sp_array->removeObject(sp1);
10. beta:
11. sp_vec.eraseObject(sp1);
12. //如果是要删除容器中全部的对象:
13. Alpha:
14. sp_array->removeAllObject();
15. beta:
16. sp_vec.clear();

6、其他
”说破不值钱“,其实Vector也就那样啦,恩,那样...最后补充一些其他的用法:

 

 

01. //a 在容器中的任何一个位置插入对象:
02. sp_vec.pushBack(sp1);
03. sp_vec.pushBack(sp2);
04. //目前的情况是,sp1在容器的第一个位置,sp2在容器的第二个位置,这时候我们要将sp3放入第一个位置:
05. sp_vec.insert(0,sp3);//ok
06.  
07. //b 查找容器中的对象:
08. //1、假设不知道容器中是否有sp3这个精灵,这时候可以这样:
09. sp_vec.contains(sp3);//如果有,返回true,无返回false;
10. //2、已知容器中有sp3这个精灵,想获得它在容器中的位置:
11. int pos_int = sp_vec.find(sp3);
12. //上面的方法可以获得sp3的位置,但返回的其实是迭代器的地址,你得到的结果可能是45214等等,如果想获得正常需要的位置,可以这样:
13. int pos_int = sp_vec.find(sp3) - sp_vec.begin();//ok

恩,时间不多,先写到这吧。昨晚才去了解beta里的Vector,如果有什么写错的地方或者用的不恰当的地方,敬请告知...

 

原创地址:http://blog.csdn.net/start530?viewmode=contents

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值