考虑下面的代码:混乱与C++ STL容器[]操作和默认值
unordered_map<string, vector<string>> hashtable;
string s = "foo";
hashtable[s].push_back("bar");
这似乎是工作,但是这意味着,在第三行,它是既添加新的条目添加到散列表通过初始化关键字“foo”处的字符串向量以及向该空向量添加“bar”。我的困惑是怎么来的,我们没有明确初始化像一个向量:
unordered_map<string, vector<string>> hashtable;
string s = "foo";
vector<string> vec;
vec.push_back("bar");
hashtable[s] = vec;
添加到我的困惑是,当我们面对的是这样的东西在C++中初始化数组,这是好事,明确初始化类的数组所以:
,如果我们要确保阵列的所有值是因为没有它初始化为0这是必需的,有可能是在同一个地方的阵列初始化时存储在内存中的垃圾值。与哈希表要回我的第一个问题,我们怎么知道
hashtable[s].push_back("bar");
不推“酒吧”与垃圾值的载体?
我意识到我的问题根本不清楚。任何澄清与行为[]运营商和默认值的STL容器是普遍的,将不胜感激。