1. Value

cocos2d::Value 这包括一个非常大的数字原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外

加std::vector<Value>, std::unordered_map<std::string,Value> 和 std::unordered_map<int,Value> 的类。

你能够把全部上面的提及的原生类型放入 cocos2d::Value 对象中,然后将它们转化为相应的原生类型。反之亦然。

Value val;   // 调用默认构造函数
if (val.isNull()) {log("val is null");
}else{std::string str =val.getDescription();log("The description of val0:%s",str.c_str());
}
//----------------------------------------------------
Value val1(65);   // 用一个 int 初始化
//Value val1(3.4f);   // 用一个 float 初始化
//Value val1(3.5);   // 用一个 double 初始化
log("The description of the integer value:%s",val1.getDescription().c_str());
log("val1.asByte() = %c",val1.asByte());
//----------------------------------------------------
std::string strV = "string";
Value val2(strV);   // 用 string 初始化
log("The description of the string value:%s",val2.getDescription().c_str());
//----------------------------------------------------
auto sp0 = Sprite::create();
Vector<Object*>* vecV = new Vector<Object*>();
vecV->pushBack(sp0);
Value val3(vecV);   // 用 Vector 初始化
log("The description of the Vector value:%s",val3.getDescription().c_str());
delete vecV;
//----------------------------------------------------
Map<std::string, Object*>* mapV = new Map<std::string, Object*>();
mapV->insert(strV,sp0);
Value val4(mapV);   // 用 Map 初始化
log("The description of the Map value:%s",val4.getDescription().c_str());
delete mapV;
//----------------------------------------------------
Value val6(&val4);   // 用 Map 初始化
log("The description of the Value-type value:%s",val6.getDescription().c_str());
//----------------------------------------------------
val2 = val1;   // 在两个不同指类型间赋值
log("operator-> The description of val2:%s",val2.getDescription().c_str());
val2 = 4;   // 直接赋值
log("operator-> The description of val4:%s",val2.getDescription().c_str());
输出:cocos2d: val is null
cocos2d: The description of the integer value:
65cocos2d: val1.asByte() = A
cocos2d: The description of the string value:
stringcocos2d: The description of the Vector value:
truecocos2d: The description of the Map value:
truecocos2d: The description of the Value-type value:
truecocos2d: operator-> The description of val2:
65cocos2d: operator-> The description of val4:
4

Value的作用和使用方法:在创建Value时,往构造函数里传入一个值。Value就会自己主动依据这个值来决定自己的类型。在获取Value的值时,就依据它的类型。调用as**函数获取。

整数、浮点型和字符串之间的转换

整型转为字符串: std::string str = "NO"+Value(1).asString();

字符串转为整型:log("%d",Value("1234").asInt())

浮点型转字符串:log("%s",Value(123.5f).asString().c_str())

字符串转浮点型:log("%f",Value("14.45").asFloat())

2. Vector

Vector是一个封装好的能动态增长顺序訪问的容器。

主要使用的函数说明:

size():Vector大小

at(index):返回Vector下标为index的对象

pushBack(object):在Vector的最后加入一个object对象

eraseObject(object):从Vector中移除object对象

erase(index):从Vector中移除下标为index的对象

clear():清空Vector

怎样遍历Vector

for(auto obj : vector){

...

}

3.Map

Map是一个存储键值对的关联式容器,它能够通过它们的键高速检索相应的值。

主要函数:

insert(key,value):向Map中插入一个对象。

at(key):返回Map中keyword为key的对象

怎样遍历Map?

mapKeyVec = map1.keys();for(auto key : mapKeyVec){auto spTag = map1.at(key)->getTag();log("The Sprite tag = %d, MAP key = %s",spTag,key.c_str());log("Element with key %s is located in bucket %zd",key.c_str(),map1.bucket(key));}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/mfrbuaa/p/4673169.html

cocos2dx 3.x Value、Vector和Map意识相关推荐

  1. MFC中STL容器中Vector,List,Map基本用法汇总

    容器就是数据结构的泛指,迭代器就是指针的泛指,可以指向元素.它可以用来存储数据,就比如杯子用来装水一样.而STL中的容器有很多,它包括vector,list,map,deque,set等.我就简单列举 ...

  2. vector, list, map在遍历时删除符合条件的元素

    直接看源码,内有详细解释 /* 测试vector, list, map遍历时删除符合条件的元素 本代码测试环境: ubuntu12 + win7_x64 */ #include <iostrea ...

  3. cocos2d-x3.0中数据类型vector,map、value

    在3.0中,已经不再使用以前的ccarray,ccdictionary,ccint等从以前的oc继承过来的数据类型,转而加入了自己的数据结构,更加符合c++的开发习惯和思考模式,其中就包括了vecto ...

  4. 使gdb支持string、vector、map等STL类型数据的查看(linux)

    前提条件 (1)需要安装python [danni@vm-xxx-18 develop]$ python --version Python 2.6.6 (2)需要有gcc [danni@vm-xxx- ...

  5. LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)

    翻译 给定两个字符串s和t,决定它们是否是同构的.假设s中的元素被替换能够得到t,那么称这两个字符串是同构的.在用一个字符串的元素替换还有一个字符串的元素的过程中.所有字符的顺序必须保留. 没有两个字 ...

  6. vector/list/map/set的插入、删除、遍历 - remove\erase函数

    1.vector中删除满足某些条件的元素和迭代器失效问题 #include <iostream> #include <vector> using namespace std; ...

  7. ArrayList、LinkedList、 Vector、Map 用法比较

    ArrayList和Vector是采用数组方式存储数据,此数组元素总数大于实际存储的数据个数以便增加和插入元素,二者都允许直接序号索引元素,但是插入数据要移动数组元素等内存操作,所以它们索引数据快.插 ...

  8. vector、map 内存释放

    一.vector 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3 ...

  9. 1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码

     Cocos2dx3.2以后使用Vector<T>代替了CCArray.案例如下: 头文件:T02Vector.h #ifndef __T02Vector_H__ #define __ ...

最新文章

  1. 关于CVPR 2019投稿的一些感想
  2. Microbiome:中科院遗传发育所揭示植物发育和氮肥共同作用下的小麦根系微生物组...
  3. java 用来查找输出的函数_Solr复杂查询一:函数查询
  4. macOS 环境安装Flutter
  5. Latex与VSCode环境搭建问题解决
  6. NVIDIA助力SiemensPLMSoftware“工业4.0创新实验室”,携手推进中国制造创新之路
  7. 带你根据源码了解View的事件触发流程,主要讲解为什么子View返回true,ViewGroup就无法接收到事件的过程
  8. 【博客话题】坚持的背影--记我的入门老师
  9. Java中那些内存泄漏的场景!
  10. __set() And __get() 使用详解.
  11. leetcode—14.链表反转类题目python解答
  12. PMP考试难度大吗?
  13. 深入浅出Python——Python高级语法之异常、模块、包
  14. 第15课:JSP动作 Jsp forward动作(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
  15. cmd 根据计算机名查ip地址_教你怎么查看本机IP地址
  16. 计算机房设计规范2008,电子计算机房设计规范.doc
  17. 计算机怎么识别ascll汉字,汉字的ASCII码表示和编码是怎样的?
  18. [OPS][GPU]GPU峰值计算能力计算
  19. 简述信息都有哪些特征?
  20. 信创IT网管运维管理软件,信创运维服务平台

热门文章

  1. 【 HDU - 2594 】Simpsons’ Hidden Talents(KMP应用,求最长前缀后缀公共子串)
  2. c语言中只能逐个引用6,C语言前面六个练习.doc
  3. php ../ 和 ./ 区别,php $_POST 与 php://input的区别分析
  4. centos7卸载mysql数据库,CentOS7 安装卸载MySQL
  5. Spring3.1.0+Quartz1.8.6整合实现计划任务
  6. 使用 CXF 做 webservice 简单例子
  7. python3 输入输出_Python3基础之输入和输出实例分析
  8. Linux 服务器程序规范、服务器日志、用户、进程间的关系
  9. ThinkPHP redirect 页面重定向使用详解与实例
  10. 泛型lua的for循环以及lua的特殊的dowhile循环