标准::unordered_map 中的 std::array 的值初始化



考虑代码:

#include <unordered_map>
#include <array>
#include <iostream>
int main () {
std::unordered_map<int, std::array<int, 5>> map;
map[42][0] = 1;
for (int i = 0; i < 5; i++) {
std::cout << map[42][i] << " ";
}
}

这会在我的系统上打印1 0 0 0 0std::map中保存的std::array的内容在插入时进行值初始化(即数组内的所有整数都设置为 0(。标准能保证这一点吗?我不应该期望用作地图值的数组包含垃圾?

运算符 [] 插入value_type(key, T())如果键不存在。此函数等效于return insert(std::make_pair(key, T()))

T(( 表示默认初始化

自 C++17 以来 此函数等效于返回this->try_emplace(key).first->second

在运算符 [] 的情况下构造 emplace/try_emplace 构造默认值初始化值

从 https://en.cppreference.com/w/cpp/container/map/operator_at

最新更新