首页 > 编程语言 > 详细

[C/C++标准库]_[std::map的使用细节]

时间:2014-03-21 10:34:14      阅读:507      评论:0      收藏:0      [点我收藏+]


map


1.判断key是否存在的注意细节.

以前是通过[key]的返回值来判断key是否存在,这样是不行,因为map会创建不存在key的相应的pair.正确的方法是通过find来判断.


#include <map>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <assert.h>
#include <stdio.h>
#include <typeinfo>
using namespace std;

int main(int argc, char const *argv[])
{
	int i = 10;
	map<int,int*> m1;
	map<int,int> m2;
	map<int,string> m3;

	m1[i] = &i;
	m2[i] = i;
	m3[i] = string("test");

	cout << m1[i] << endl;
	cout << m2[i] << endl;
	cout << m3[i] << endl;

	//1.判断key是否存在的办法.
	assert(m1.find(3) == m1.end());
	assert(m2.find(3) == m2.end());
	

	map<int,string>::iterator res = m3.find(3);
	//注意:假如这里引用了m3[3],默认会创建这个key的一个空值.
	//对于不存在的key,通过[]引用这个key,默认会创建一个这个key的对应的value的初始值,
	//如果是指针类型就是NULL,类类型就是调用类的默认构造函数创建的默认值,
	//如果是数值类型,那么就会是0.如果调用了一次[key(不存在的key)],那么find的end()比较就会失败。
	// assert(m3[3].empty()); 
	assert(m3.find(3) == m3.end()); //1.判断key是否存在的方法.

	return 0;
}

输出:

0x22fedc
10
test



[C/C++标准库]_[std::map的使用细节],布布扣,bubuko.com

[C/C++标准库]_[std::map的使用细节]

原文:http://blog.csdn.net/infoworld/article/details/21696929

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!