转载请注明来自: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、创建

先创建两个精灵:

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

创建容器

[html] view
plain
copy

  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. beta:
  5. sp_vec.pushBack(sp1);//和 堆栈 一样一样的
  6. sp_vec.pushBack(sp2);

3、获得容器中的大小

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

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

  1. Alpha:
  2. for(int i=0;i<sp_array->count();i++)
  3. {
  4. auto sp = (Sprite*)sp_array->getObjectAtIndex(i);
  5. sp->runAction(MoveTo::create(0.2f,Point(100,100)));
  6. }
  7. beta:
  8. for( auto& e : sp_vec)
  9. {
  10. e->runAction(MoveTo::create(0.2f,Point(100,100)));//这样的for写法是C++
    11的新特性
  11. }

5、删除容器中的精灵

  1. //假设是要删除容器中最后一个精灵的话:
  2. Alpha:
  3. sp_array->removeLastObject();
  4. beta:
  5. sp_vec.popBack();
  6. //假设是直接删除对象:
  7. Alpha:
  8. sp_array->removeObject(sp1);
  9. beta:
  10. sp_vec.eraseObject(sp1);
  11. //假设是要删除容器中所有的对象:
  12. Alpha:
  13. sp_array->removeAllObject();
  14. beta:
  15. sp_vec.clear();

6、其它

”说破不值钱“,事实上Vector也就那样啦,恩,那样...最后补充一些其它的使用方法:

  1. //a 在容器中的不论什么一个位置插入对象:
  2. sp_vec.pushBack(sp1);
  3. sp_vec.pushBack(sp2);
  4. //眼下的情况是,sp1在容器的第一个位置,sp2在容器的第二个位置,这时候我们要将sp3放入第一个位置:
  5. sp_vec.insert(0,sp3);//ok
  6. //b 查找容器中的对象:
  7. //1、如果不知道容器中是否有sp3这个精灵,这时候能够这样:
  8. sp_vec.contains(sp3);//假设有,返回true,无返回false;
  9. //2、已知容器中有sp3这个精灵,想获得它在容器中的位置:
  10. int pos_int = sp_vec.find(sp3);
  11. //上面的方法能够获得sp3的位置,但返回的事实上是迭代器的地址,你得到的结果可能是45214等等,假设想获得正常须要的位置,能够这样:
  12. int pos_int = sp_vec.find(sp3) - sp_vec.begin();//ok

[Cocos2d-x v3.x]浅谈容器Vector的更多相关文章

  1. 浅谈数据结构vector

    vector: 又名 向量 1.C++中的一种数据结构. 2.是一个类. 3.相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. A.使用时, ...

  2. [Kubernetes]浅谈容器网络

    Veth Pair 这部分内容主要介绍一个设备: Veth Pair . 作为一个容器,它可以声明直接使用宿主机的网络栈,即:不开启 Network Namespace .在这种情况下,这个容器启动后 ...

  3. 浅谈C++ STL vector 容器

    浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...

  4. C++ STL中的常用容器浅谈

    STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...

  5. 浅谈 Vector

    目录 浅谈Vector 1.容器基本操作 2.vector 初始化 3.vector的赋值与swap 4.vector的增删改除 1.增加元素 2.访问元素 3.删除元素 4.元素的大小 浅谈Vect ...

  6. 浅谈C++ STL queue 容器

    浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...

  7. 浅谈Vector

    浅谈Vector 在之前的文章中,我们已经说过线程不安全的ArrayList和LinkedList,今天我们来讲讲一个线程安全的列表容器,他就是Vector,他的底层和ArrayList一样使用数组来 ...

  8. 浅谈surging服务引擎中的rabbitmq组件和容器化部署

    1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...

  9. 浅谈Spring的两种配置容器

    浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41   作者:黄小鱼ZZZ     ...

随机推荐

  1. C++经典笔试题及参考答案-趋势科技

    1.static有什么用途?(请至少说明两种) 答案:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数 ...

  2. 并发编程实践五:ReentrantLock

    ReentrantLock是一个可重入的相互排斥锁,实现了接口Lock,和synchronized相比,它们提供了同样的功能.但ReentrantLock使用更灵活.功能更强大,也更复杂.这篇文章将为 ...

  3. Queue 消息的发送与接收(PTP 消息传递模型)

    上篇博客写到了JMS两种消息模型(P2P.pub/sub)<JMS两种消息模型>.本篇博客通过一个实例来进一步了解P2P模型. Queue消息的发送与接收--PTP消息传递模型,样例: Q ...

  4. hdu1217Arbitrage--解题报告

    题意:套利,一个US币换取0.5 British pound,而1 British pound 换取10.0 French francs,同一时候 1 French franc buys 0.21 U ...

  5. hdu 3405 world islands

    求删点后最小的生成树,n<50....数据好弱,直接暴力枚举就行...删点的时候直接g[i][j]=INF就行了. #include<iostream> #include<al ...

  6. 算法起步之Bellman-Ford算法

    原文:算法起步之Bellman-Ford算法 从这篇开始我们开始介绍单源最短路径算法,他是图算法之一,我们前面说的贪心,图的遍历,动态规划都是他的基础,单源最短路径其实说的就是图中节点到节点的最短路径 ...

  7. 【大话QT之十七】Jenkins介绍及安装使用文档(与Git集成)

    文章文件夹结构例如以下: 1> Jenkins与Git相关介绍 2> Jenkins部署安装 3> Gitblit部署安装 4> Jenkins与Git集成使用 5> 项 ...

  8. Hive Metastore ObjectStore PersistenceManager自动关闭bug解析

    最近在测试HCatalog,由于Hcatalog本身就是一个独立JAR包,虽然它也可以运行service,但是其实这个service就是metastore thrift server,我们在写基于Hc ...

  9. spark的action和transformations汇集

    汇总了Spark支持的Transformations 和Actions 用于备忘! 參考 http://spark.apache.org/docs/latest/programming-guide.h ...

  10. sql优化-提防错误关联

    在写sql时,在多表关联时,有时候容易把关联关系写错.一般情况下,该问题比较容易发现,但如果sql较长时,光靠眼力就比较难发现了.今天写了一个脚本,碰到该问题了. 第一版本的脚本如下: select ...