提问人:24n8 提问时间:11/12/2018 最后编辑:24n8 更新时间:11/12/2018 访问量:320
std::unordered_map 中的以下命令之间有什么区别吗?
Is there any difference between the following commands from std::unordered_map
问:
对于将键值对插入到无序映射中,例如,我们可以通过以下两种方式中的任何一种来做到这一点:std::unordered_pair<int,int> map1
map1[2]=5;
map1.insert({2,5});
使用 或 有什么区别吗?std_unordered_insert
operator[]
如果我想查找给定键的映射值,可以使用以下任一方法:
mappedVal = map1.at(2);
mappedVal = map1[2];
同样,使用 or 之间有什么区别吗?std::unordered_map::at
operator[]
答:
2赞
Swordfish
11/12/2018
#1
与 相反,如果键不存在,则会引发异常。 将改为创建密钥。operator[]
at()
std::out_of_range
operator[]
评论
0赞
24n8
11/12/2018
谢谢。所以我认为这意味着,如果我想在我“认为”是现有键的地方找到值,那么使用它会更安全?at()
3赞
Sid S
11/12/2018
#2
地图1[2]=5;
如果存在带键的条目,请将该条目的值设置为 。否则,创建一个具有 key 和 value 的新条目。2
5
2
5
地图1.插入({2,5});
如果不存在带键的条目,则创建一个带有键和值的新条目。否则,不执行任何操作。2
2
5
映射Val = map1.at(2);
如果存在带键的条目,请将其值赋给 。否则,将引发异常。2
mappedVal
out_of_range
mappedVal = 地图1[2];
如果存在带有键的条目,请将其值分配给 mappedVal。否则,请创建一个使用默认值的条目,并将该默认值分配给 mappedVal。2
2
对于查找,我通常使用 instead 而不是 or(除非我知道给定键有一个条目)。unordered_map::find()
at()
operator [] ()
评论