cocos2dx 3.x Value、Vector和Map意识
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:
65 cocos2d: val1.asByte() = A
cocos2d: The description of the string value:
string cocos2d: The description of the Vector value:
true cocos2d: The description of the Map value:
true cocos2d: The description of the Value-type value:
true cocos2d: operator-> The description of val2:
65 cocos2d: 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));
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
cocos2dx 3.x Value、Vector和Map意识的更多相关文章
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...
- paip.提升性能---list,arraylist,vector,linkedlist,map的选用..
paip.提升性能---list,arraylist,vector,linkedlist,map的选用.. arraylist,vector基本一样,但是,vector线程安全的. 作者Attilax ...
- pair在vector和map中的使用
#include <iostream> #include <cstdio> #include <cstring> #include <stack> #i ...
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
Java容器类List.ArrayList.Vector及map.HashTable.HashMap的区别与用法 ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数 ...
- LeetCode 290 Word Pattern(单词模式)(istringstream、vector、map)(*)
翻译 给定一个模式,和一个字符串str.返回str是否符合同样的模式. 这里的符合意味着全然的匹配,所以这是一个一对多的映射,在pattern中是一个字母.在str中是一个为空的单词. 比如: pat ...
- C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法
每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27705613 容器 3.0版本号之前Cocos2d- ...
- cocos2d-x之Vector与map
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...
- c++ 标准库的各种容器(vector,deque,map,set,unordered_map,unordered_set,list)的性能考虑
转自:http://blog.csdn.net/truexf/article/details/17303263 一.vector vector采用一段连续的内存来存储其元素,向vector添加元素的时 ...
随机推荐
- graph driver-device mapper-01driver初始化
// thin device数据结构 type DevInfo struct { Hash string `json:"-"` DeviceId int `json:"d ...
- HBaseConvetorUtil 实体转换工具
HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil { /** * @Title: convetor * @De ...
- 网站可以免费做业务CMS讨论
中国现在用PHPCMS DEDECMS织梦 科学新闻CMS 帝国.Discuz.Ecshop等待,但他们个人利益免费,业务.政府.授权费. 什么CMS它可以自由地做商务网站? 考虑到下面几 ...
- 网站上flv,MP4等格式的视频文件播放不出来的解决办法
在做一个网站时,发现视频文件,比如flv,MP4格式在本地可以正常的播放,但是传到了开发机器上,就不行了.播放器的文件地址是对的,就是一直没有反应. 经过长时间的实验,发现问题在与iis的设置问题.i ...
- DBMS_STATS.GATHER_TABLE_STATS
由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要! 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直方图信 ...
- android studio学习
http://blog.csdn.net/ryantang03/article/details/8948037 http://www.it165.net/pro/html/201109/676.htm ...
- #define XXX do{ XXX } while(0) 为什么使用
#define XXX do{ XXX } while(0) 为什么使用 时常会遇到一个非常"奇怪的宏定义", rt.(欧西巴...思考不够深刻啊, 皮鞭, 啪啪啪) 近期又遇到这 ...
- ps设计资料整理
零基础学会建立一个简单化妆品网站—前台设计篇1[PS画草图] http://xiebiji.com/2008/09/huazhuang4/?wptheme=Plainscape&ie=1 PS ...
- CentOS7卸载KDE桌面(转)
最初安装centos时选择了安装KDE桌面,打开很卡,没有用到,想卸载,可是试了网上的方法什么yum groupremove kde-desktop 都不奏效,于是只能自己找出KDE的包,然后yum卸 ...
- retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
[root@qa bin]# hadoop fs -ls / Warning: $HADOOP_HOME is deprecated. 14/07/29 13:25:35 INFO ipc.Clien ...