C++20 包含和获取值 VS 查找

问题描述 投票:0回答:0

我知道 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

一样高效也会很有帮助
c++ find c++20 contains
© www.soinside.com 2019 - 2024. All rights reserved.