繁体   English   中英

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_insertoperator[]之间有什么区别吗?

如果要查找给定键的映射值,可以使用以下两种方法之一:

mappedVal = map1.at(2);
mappedVal = map1[2];

同样,使用std::unordered_map::atoperator[]之间有什么区别?

MAP1 [2] = 5;

如果存在带有键2的条目,则将该条目的值设置为5 否则,使用键2和值5创建一个新条目。


map1.insert({2,5-});

如果不存在具有键2条目,则创建一个具有键2和值5的新条目。 否则, 什么都不做


mappingVal = map1.at(2);

如果存在键为2的条目, mappedVal其值分配给mappedVal 否则,抛出out_of_range异常。


appedVal = map1 [2];

如果存在具有键2的条目,则将其值分配给mappingVal。 否则,使用默认值为2创建一个条目,并将该默认值分配给mappingVal。


对于查找,我通常使用unordered_map::find()而不是at()operator [] () (除非我知道给定键有一个条目)。

operator[] ,如果键不存在,则at()将抛出std::out_of_range异常。 operator[]将代替创建密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM