考慮下面的代碼:混亂與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容器是普遍的,將不勝感激。