map没有对应的键查找

来源:互联网 发布:倡导网络文明文章 编辑:程序博客网 时间:2024/06/05 18:21
map如果没有对应的键,会返回对应的默认的(如果有默认值)
#include <iostream> /*std::cout*/#include <map>class Test{public:void fun(){std::cout << "intMap:[" << intMap[8] << "]" << std::endl;std::cout << "floatMap:[" << floatMap[8] << "]" << std::endl;std::cout << "doubleMap:[" << doubleMap[8] << "]" << std::endl;std::cout << "charMap:[" << charMap[8] << "]" << std::endl;std::cout << "stringMap:[" << stringMap[8] << "]" << std::endl;}private://std::map<int, A> mapTest;std::map<int, int> intMap;std::map<int, float> floatMap;std::map<int, double> doubleMap;std::map<int, char> charMap;std::map<int, std::string> stringMap;};int main(int argc, char *argv[]) {Test test;test.fun();return 0;}

很明显我没有向map中插入键为8的键值对,但是对map的查找竟然没有报错,而是返回了默认的值


如果没有默认值呢?看看这个例子

#include <iostream> /*std::cout*/#include <map>class A{public:A(int a) : a_(a){}int show(){return a_;}private:int a_;};class Test{public:void fun(){std::cout << "mapTest:[" << mapTest[8].show() << "]" << std::endl;}private:std::map<int, A> mapTest;};int main(int argc, char *argv[]) {Test test;test.fun();return 0;}

报告的错误是:



稍微修改下就ok了

#include <iostream> /*std::cout*/#include <map>class A{public:A(int a = 0) : a_(a){ //设置默认值}int show(){return a_;}private:int a_;};class Test{public:void fun(){std::cout << "mapTest:[" << mapTest[8].show() << "]" << std::endl;}private:std::map<int, A> mapTest;};int main(int argc, char *argv[]) {Test test;test.fun();return 0;}



原创粉丝点击