C++ 与C+混淆+;STL容器[]运算符和默认值
考虑以下代码:C++ 与C+混淆+;STL容器[]运算符和默认值,c++,arrays,vector,stl,unordered-map,C++,Arrays,Vector,Stl,Unordered Map,考虑以下代码: unordered_map<string, vector<string>> hashtable; string s = "foo"; hashtable[s].push_back("bar"); 如果我们想确保数组初始化时所有值都为0,那么这是必需的,因为如果没有它,内存中可能会有垃圾值存储在数组初始化时所在的位置。回到我关于哈希表的第一个问题,我们怎么知道 hashtable[s].push_back("bar"); 把“条”推到一个有垃圾值的向量中
unordered_map<string, vector<string>> hashtable;
string s = "foo";
hashtable[s].push_back("bar");
如果我们想确保数组初始化时所有值都为0,那么这是必需的,因为如果没有它,内存中可能会有垃圾值存储在数组初始化时所在的位置。回到我关于哈希表的第一个问题,我们怎么知道
hashtable[s].push_back("bar");
把“条”推到一个有垃圾值的向量中不是吗
我意识到我的问题一点也不清楚。如果对[]运算符的行为和STL容器的默认值有任何澄清,我们将不胜感激
std::vector
(即空的std::vector
),然后通过std::unordered_map::operator[]
引用返回向量。然后在向量上调用push_back(“bar”)
(然后它的大小变为1
,并包含一个元素)
std::vector
与原始数组不同,它的大小是动态的。如上所述,初始化的值std::vector
为空,其大小为0
,仍然不包含任何元素(以及任何“垃圾值”)
std::vector
(即空的std::vector
),然后通过std::unordered_map::operator[]
引用返回向量。然后在向量上调用push_back(“bar”)
(然后它的大小变为1
,并包含一个元素)
std::vector
与原始数组不同,它的大小是动态的。如上所述,初始化的值std::vector
为空,其大小为0
,仍然不包含任何元素(以及任何“垃圾值”)
int array[10] = {0);
hashtable[s].push_back("bar");