ValueMap的作用和ValueVector一样,只能存放数据类型的元素。其他不多说看,直接看一些常见的使用:
1、往ValueMap中添加一个元素:
1
2
3
|
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
1
|
star_map.insert(make_pair(
"star"
,a));
|
2)使用typedef
1
2
|
typedef
map<std::string,Value>::value_type valType;
star_map.insert(valType(
"star"
,a));
|
当然了,上面这种方法还是有点麻烦,一点都不爽快,你问还有没有更直接的办法?当然有:
1
|
star_map[
"star"
] = a;
|
这样就可以了,"star"就是键名称,a就是键值。
2、读取ValueMap中的元素
我们就说上面的那个a 吧。将其从star_map中读取出来,怎么在star_map中找到它呢?很容易,找到a对应的键就可以啦。
1
|
Value a = star_map[
"star"
];
|
这样就将a给取出来了,容易吧。我们都知道a实际上是个整型,所以我们在取出a时也可以直接将其转成整型,代码如下:
1
|
int
a = star_map[
"star"
].asInt();
|
好了,就说这些,更多细节请参考《ValueVector和Vector不得不说的故事》
来源网址:http://blog.csdn.net/star530/article/details/38025749