[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 ...
随机推荐
- JSP的include指令
JSP的include 指令:向当前页面中插入的一个静态文件的内容. 在test5.jsp里面 <%@ include file="test5_1.jsp" %> 新建 ...
- MongoDB学习笔记(一)
MongoDB的介绍我就不说了.直接开始环境的搭建和连接.在这个之前,向大家介绍几个关于MongoDB的网站. 1. https://www.mongodb.com/ MongoDB的官网. 2. ...
- JSCapture实现屏幕捕捉
JSCapture 是用纯 JavaScript 和 HTML5 实现的屏幕捕捉库. 能够随意在浏览器或者桌面视频进行截图, JSCapture 使用 getUserMedia 来实现屏幕捕获. 当前 ...
- opencv中的meanshift图像切割
Meanshift(均值漂移)是一种在一组数据的密度分布中寻找局部极值的稳定的方法.Meanshift不仅能够用于图像滤波,视频跟踪,还能够用于图像切割. 通过给出一组多维数据点,其维数是(x,y,r ...
- poj3461 Oulipo (KMP模板题~) 前面哪些也是模板题 O.O
# include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...
- UNIX 网络编程之线程
概述: 实现并发服务器一般都是父进程accept一个连接,然后fork一个子进程,该子进程处理与该连接对端的客户之间的通信.但是fork是昂贵,耗资源和时间.而线程是轻量级线程,它的创建比进程的创建块 ...
- 提领NULL指针
通常之中导致程序崩溃的最重要的原因是试图取消引用NULL指针.正如在以前的文章中指出,智能指针RefCountPtr和ScopedPtr它提供了一个诊断的执行时间. 但,并不是所有的指针是所有的对象都 ...
- 跟我extjs5(38--单个模块的设计[6获得模块列表数据])
跟我extjs5(38--单个模块的设计[6获得模块列表数据]) 在程序的前一个表以及,据的执行过程. 在菜单中选择 "系统管理"--"模块分组" ...
- fzu2150(bfs)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 题意:在任意两处点火,求最短时间烧光所有草堆. 分析:由于n,m比较小,将所有草堆坐标记录下来,然后暴力 ...
- Music Studio项目心得--JNI实现C++调用JAVA
这个项目是我參加内蒙古挑战杯的比赛项目,因为时间关系,我没时间实现OpenOMR开源项目由JAVA全然向C++的转换,经过我半个多月的尝试,我将OpenOMR中的1/3的代码改写成C++,只是非常快我 ...
