首页 > 代码库 > Cocos2dx 3.0 过渡篇(三十二)话说ValueMap的一般使用

Cocos2dx 3.0 过渡篇(三十二)话说ValueMap的一般使用

周末到厦门找死党聚聚,晚上一伙人杀到一还算凑合的大排档准备来个不醉不归。菜都点完了朋友突然说这里没有洗手间...尼玛,当时我们就不乐意了:喝五六个小时的啤酒,没有洗手间你是打算憋死谁?二话不说直接换一家,不过这次一定要谨慎选择,最终看到一家看起来还算正宗的大排档,我下意识拨了下头发,走到前台MM面前,轻声问道:你们这...有洗手间吗?

声音低沉且性感,语调中还夹带着些许的忧伤。

前台MM瞪大眼睛,好一会才反应过来说道:洗手间?肯定有啊!

----------------------------

好了,接着上一篇我继续扯一些有的没的。

这次就说ValueMap吧,别问我这是什么,自己去Value.h里看!当然了,在这个谷歌“已死”的年代,不建议你去百度,因为百度上根本搜不到和ValueMap有关的词,不信你试试,反正我瞎说的。

ValueMap的作用和ValueVector一样,只能存放数据类型的元素。其他不多说看,直接看一些常见的使用:

1、往ValueMap中添加一个元素:

Value a = 10;
ValueMap star_map;
star_map.insert(map<std::string,Value>::value_type("star",a));
上方代码是将Value类型(实际上是整型)的变量a放入到ValueMap容器中,这里我使用map容器中用到的insert方法。
a在ValueMap容器中对应的key为"star"。
不过这种方法很麻烦有木有!
这里的map<std::string,Value>::value_type 是一个新创建的pair对象,将直接插入到map容器中。谨记value_types pair<const K,V>类型的同义词,K为键类型,V是键所关联的值的类型。
传递给insert的实参相当笨拙,可用两种方法简化:
1)使用make_pair
star_map.insert(make_pair("star",a));
2)使用typedef
typedef map<std::string,Value>::value_type valType;
	star_map.insert(valType("star",a));

当然了,上面这种方法还是有点麻烦,一点都不爽快,你问还有没有更直接的办法?当然有:
star_map["star"] = a;
这样就可以了,"star"就是键名称,a就是键值。
够方便吧?!快!准!狠!

2、读取ValueMap中的元素

我们就说上面的那个 a 吧。将其从star_map中读取出来,怎么在star_map中找到它呢?很容易,找到a对应的键就可以啦。
Value a = star_map["star"];
这样就将a给取出来了,容易吧。我们都知道a实际上是个整型,所以我们在取出a时也可以直接将其转成整型,代码如下:
int a = star_map["star"].asInt();
OK;

好了,就说这些,更多细节请参考前一篇的ValueVector:http://blog.csdn.net/star530/article/details/37834689

尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/38025749

Cocos2dx 3.0 过渡篇(三十二)话说ValueMap的一般使用