话说ValueMap的一般使用

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

你可能感兴趣的:(话说ValueMap的一般使用)