我知道 C++ 中的某些容器,例如
map
或 unordered_map
,有一种机制,如果您有密钥,则可以直接访问值。
我不确定这是否完全正确...
这里的重点是我想用contains方法检查元素是否存在,然后直接用
map[key]
或者map.at[key]
取值。
我在某处随机读到这样做是不好的做法,因为它会执行两次搜索而不是一次... 所以我有一个问题......实际上拥有钥匙有什么用吗?不会立即访问吗?
find
是否遍历所有元素直到找到键或值?
什么更好?
example contains
if (storageMap.contains(key)) {
return storageMap.at(key);
}
VS
example find
auto it = storageMap.find(key);
if (it != storageMap.end()) {
return it.second;
}
如果你能向我解释为什么一个比另一个更好,那就太完美了。或者,如果这两种方法是等价的,解释为什么也很有用。知道编译器是否会使
example contains
像 example find
一样高效也会很有帮助