📅  最后修改于: 2023-12-03 15:13:55.575000             🧑  作者: Mango
在C++的STL中,map是一种非常实用的数据结构。而map中的operator[]函数更是非常方便,它可以在访问一个不存在的键(key)时,自动为该键创建一个默认值。
mapped_type& operator[] (const key_type& k);
返回存储在map中与指定键相关联的值的一个引用。
当我们进行map访问时,如果我们访问的键在map中不存在,通常情况下我们需要先判断该键是否存在,然后再进行插入键值对的操作。而调用operator[]函数,则能变得更加简便。这里给出一个例子:
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> my_map;
my_map['a'] = 10;
my_map['b'] = 20;
my_map['c'] = 30;
//访问map中已存在的键
cout << "my_map['a'] = " << my_map['a'] << endl;
//访问map中不存在的键
cout << "my_map['d'] = " << my_map['d'] << endl;
return 0;
}
输出结果为:
my_map['a'] = 10
my_map['d'] = 0
可以看到,在访问一个不存在的键时,operator[]函数返回了一个值为0的默认值。这是因为,在创建map时,map的值类型(int)初始化为0。但我们也可以通过修改该值类型的初始值来实现自定义的默认值,例如:
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> my_map;
my_map['a'] = 10;
my_map['b'] = 20;
my_map['c'] = 30;
//修改map的默认值
my_map.default_value(100);
//访问map中不存在的键
cout << "my_map['d'] = " << my_map['d'] << endl;
return 0;
}
输出结果为:
my_map['d'] = 100
通过使用operator[]函数,我们可以更加简便地访问map,并且自动为不存在的键设置默认值。需要注意的是,map的默认值是由值类型确定的,因此在使用前需要确保该默认值符合实际需求。