考虑以下代码:
std::unordered_map<std::string, size_t> Counters;
// ...
++Counters[someString];
假设容器中没有给定键的对。然后这会导致一个新的对被插入到容器中,然后对的第二个成员加一。
我想知道以这种方式插入新对是否会将对的第二个成员(类型 counter size_t)预初始化为零?为什么?
一方面,基本类型没有构造函数,所以我认为计数器可能是垃圾。但另一方面...
考虑以下代码:
std::unordered_map<std::string, size_t> Counters;
// ...
++Counters[someString];
假设容器中没有给定键的对。然后这会导致一个新的对被插入到容器中,然后对的第二个成员加一。
我想知道以这种方式插入新对是否会将对的第二个成员(类型 counter size_t)预初始化为零?为什么?
一方面,基本类型没有构造函数,所以我认为计数器可能是垃圾。但另一方面...
是的,它会的。
https://en.cppreference.com/w/cpp/container/unordered_map/operator_at
https://en.cppreference.com/w/cpp/language/value_initialization
https://en.cppreference.com/w/cpp/language/zero_initialization
PS:不要忘记
std::指定std::size_t