C++ STL 中的 unordered_map 操作符[]
std::unordered_map::operator[] 是 C++ STL 中的一个内置函数,在容器中查询键值,如果键存在,则返回值的引用。如果不存在,则将该键插入容器。
语法:
mapped_type& operator[](key_type&& k);
参数:接受要访问其映射值的键作为参数。
返回类型:返回与键关联的引用。
示例1
// C++代码演示方法
// unordered_map操作符[]
#include <bits/stdc++.h>
using namespace std;
int main()
{
unordered_map<int, int> sample;
//Map初始化
sample = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
// 在执行任何操作之前打印元素
for (auto& it : sample)
cout << it.first << " : " << it.second << endl;
// 读取现有元素
int m = sample[1];
// 写入现有元素
sample[3] = m;
// 访问现有元素
sample[5] = sample[1];
// 不存在的元素
// 将插入新元素25
m = sample[25];
// 将插入新元素10
sample[5] = sample[10];
// 在执行操作后打印元素
for (auto& it : sample)
cout << it.first << " : " << it.second << endl;
return 0;
}
5 : 6
3 : 4
1 : 2
10 : 0
1 : 2
5 : 0
3 : 2
25 : 0
示例2
// C++代码演示方法
// unordered_map操作符[]
#include <bits/stdc++.h>
using namespace std;
int main()
{
unordered_map<char, int> sample;
//Map初始化
sample = { { 'a', 2 }, { 'b', 4 }, { 'c', 6 } };
// 在执行任何操作之前打印元素
for (auto& it : sample)
cout << it.first << " : " << it.second << endl;
// 读取现有元素
int m = sample['a'];
// 写入现有元素
sample['b'] = m;
// 访问现有元素
sample['c'] = sample['a'];
// 不存在的元素
// 将插入新元素'd'
m = sample['d'];
// 将插入新元素'f'
sample['c'] = sample['f'];
// 在执行操作后打印元素
for (auto& it : sample)
cout << it.first << " : " << it.second << endl;
return 0;
}
c : 6
b : 4
a : 2
f : 0
a : 2
b : 2
c : 0
d : 0
最坏情况下的时间复杂度为 O(n)。