[Cocos2d-x v3.x]浅谈容器Vector
转载请注明来自:star特530的CSDN博客 http://blog.csdn.net/start530/article/details/19170853
前两天有人问我说在3.0 beta2版本号里,使用array 后编译出错,事实上是由于自beta版本号開始,已没有Array,取而代之的是容器:Vector 和 Map
先说Vector吧。
假设说C++的vector容器怎么用,假设我说太多肯定一下子就暴露了我菜鸟的身份。所以呢,在这里只是多阐述,也请大神绕路。
所以,还是回到Vector的使用问题上吧。该怎么用?既然Vector是替代了Array,那就拿Array 和Vector进行对照吧。
以下我就以创建 Sprite 精灵对象的容器为例介绍吧
1、创建
先创建两个精灵:
- auto sp1 = Sprite::create("CloseNormal.png");
 - sp1->setPosition(Point(100,100));
 - this->addChild(sp1,1);
 - auto sp2 = Sprite::create("CloseSelected.png");
 - sp2->setPosition(Point(100,200));
 - this->addChild(sp2,1);
 
创建容器
- Alpha:
 - auto sp_array = Array::create();
 - beta:
 - Vector<Sprite*> sp_vec;
 
2、将创建好的精灵加入进容器中
- Alpha:
 - sp_array->addObject(sp1);
 - sp_array->addObject(sp2);
 - beta:
 - sp_vec.pushBack(sp1);//和 堆栈 一样一样的
 - sp_vec.pushBack(sp2);
 
3、获得容器中的大小
- Alpha:
 - int count = sp_array->count();
 - beta:
 - int count = sp_vec.size();
 
4、获得容器中的精灵,并让这些元素都做统一的动作
- Alpha:
 - for(int i=0;i<sp_array->count();i++)
 - {
 - auto sp = (Sprite*)sp_array->getObjectAtIndex(i);
 - sp->runAction(MoveTo::create(0.2f,Point(100,100)));
 - }
 - beta:
 - for( auto& e : sp_vec)
 - {
 - e->runAction(MoveTo::create(0.2f,Point(100,100)));//这样的for写法是C++
11的新特性 - }
 
5、删除容器中的精灵
- //假设是要删除容器中最后一个精灵的话:
 - Alpha:
 - sp_array->removeLastObject();
 - beta:
 - sp_vec.popBack();
 - //假设是直接删除对象:
 - Alpha:
 - sp_array->removeObject(sp1);
 - beta:
 - sp_vec.eraseObject(sp1);
 - //假设是要删除容器中所有的对象:
 - Alpha:
 - sp_array->removeAllObject();
 - beta:
 - sp_vec.clear();
 
6、其它
”说破不值钱“,事实上Vector也就那样啦,恩,那样...最后补充一些其它的使用方法:
- //a 在容器中的不论什么一个位置插入对象:
 - sp_vec.pushBack(sp1);
 - sp_vec.pushBack(sp2);
 - //眼下的情况是,sp1在容器的第一个位置,sp2在容器的第二个位置,这时候我们要将sp3放入第一个位置:
 - sp_vec.insert(0,sp3);//ok
 - //b 查找容器中的对象:
 - //1、如果不知道容器中是否有sp3这个精灵,这时候能够这样:
 - sp_vec.contains(sp3);//假设有,返回true,无返回false;
 - //2、已知容器中有sp3这个精灵,想获得它在容器中的位置:
 - int pos_int = sp_vec.find(sp3);
 - //上面的方法能够获得sp3的位置,但返回的事实上是迭代器的地址,你得到的结果可能是45214等等,假设想获得正常须要的位置,能够这样:
 - int pos_int = sp_vec.find(sp3) - sp_vec.begin();//ok
 
[Cocos2d-x v3.x]浅谈容器Vector的更多相关文章
- 浅谈数据结构vector
		
vector: 又名 向量 1.C++中的一种数据结构. 2.是一个类. 3.相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. A.使用时, ...
 - [Kubernetes]浅谈容器网络
		
Veth Pair 这部分内容主要介绍一个设备: Veth Pair . 作为一个容器,它可以声明直接使用宿主机的网络栈,即:不开启 Network Namespace .在这种情况下,这个容器启动后 ...
 - 浅谈C++ STL vector 容器
		
浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...
 - C++ STL中的常用容器浅谈
		
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...
 - 浅谈 Vector
		
目录 浅谈Vector 1.容器基本操作 2.vector 初始化 3.vector的赋值与swap 4.vector的增删改除 1.增加元素 2.访问元素 3.删除元素 4.元素的大小 浅谈Vect ...
 - 浅谈C++ STL queue 容器
		
浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...
 - 浅谈Vector
		
浅谈Vector 在之前的文章中,我们已经说过线程不安全的ArrayList和LinkedList,今天我们来讲讲一个线程安全的列表容器,他就是Vector,他的底层和ArrayList一样使用数组来 ...
 - 浅谈surging服务引擎中的rabbitmq组件和容器化部署
		
1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...
 - 浅谈Spring的两种配置容器
		
浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41 作者:黄小鱼ZZZ ...
 
随机推荐
- 使用gulp创建ajax模拟请求
			
概述 之前一直使用gulp构建前端项目,这个基于node流并崇尚“编程而非配置”的工具让我深深的爱上了他.强大的gulp能做到的不仅仅是压缩和合并js.css,它能做到的还有更多.今天我给大家带来使用 ...
 - IBinder在进程之间传递一个对象的形式(一)
			
主张 什么时候service通常被称为远程时的,用到aidl来定一个接口供service和client来使用,这个事实上就是使用Binder机制的IPC通信.当client bind service成 ...
 - http staus汇总
			
参考http://www.cnblogs.com/cxd4321/archive/2008/11/20/1337776.html 常见HTTP状态码 200 OK 301 Moved Permanen ...
 - SilkTest高级进阶系列9 – 异步执行命令
			
我们常常会使用sys_execute函数执行一些外部的程序或者命令来做一些事情,但是由于sys_execute是一个同步的函数,它会等待执行的命令完成后才会返回.在大多数情况下,这个函数足够用了. 但 ...
 - 2013 吉林通化邀请赛 Play Game 记忆化搜索
			
dp[ba][ta][bb][tb]表示a堆牌从下面拿了ba张,从上面拿了ta张.b堆牌从下面拿了bb张,从上面拿了tb张.当前玩家能得到的最大的分数. 扩展方式有4种,ba+1,ta+1,bb+1, ...
 - Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
			
Installing and setting up Oracle GoldenGate connecting to an Oracle database Also please make sure t ...
 - oracle 之 内存—鞭辟近里(二)
			
overview of the pga pga是在操作系统的进程或是线程特定的一块内存区域,它不是共享的.因为pga是进程指定的,因此它不会在sga中分配. pga是一个内存堆,其中包含了被专用服务器 ...
 - FZU2177(dp)
			
传送门:ytaaa 题意:有n个***(不能调换顺序),可以组成x(x<n)个炸弹,每个炸弹的威力为该组的(max-min)^2,现在给出n个***的威力值,求能组成所有炸弹的最大威力和. 分析 ...
 - Android动绘图标——I am not a gif maker,I am a developer
			
最早在git上发现一个非常酷眩的动绘图标效果: https://github.com/xuyisheng/tickplusdrawable 不得不说,国外的程序猿在细节的考虑上,确实比我们要好非常多, ...
 - js快速分享代码
			
这是一款简单易用的文章分享工具,您只需将下面的html代码拷贝到模板中就可以实现文章快速分享功能.如果您想分享你的博客.个人网站或者企业网站等等,下面是两款不错的分享工具,值得拥有! 1. <d ...
 
			
		