gpt4 book ai didi

c++ - 在 unordered_map 中查找的性能

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:25 24 4
gpt4 key购买 nike

我知道这可能是个愚蠢的问题,但我想确定一下,但无法轻易找到此信息。

find() 在无序映射中的性能特点是什么?它和普通查找一样快/几乎一样快吗?

std::string defaultrow = sprite.attribute("defaultrow").value();
auto rclassIt = Rows::NameRowMap.find(defaultrow);
if (rclassIt != Rows::NameRowMap.end())
defRow = rclassIt->second;

对比

std::string defaultrow = sprite.attribute("defaultrow").value();
defRow = Rows::NameRowMap[defaultrow];

其中 Rows::NameRowMap 是一个将字符串索引映射到 int 的无序映射。

在我的例子中,我不确定 key 是否会事先存在,所以第一个解决方案对我来说似乎更安全,但如果我能保证存在,第二种情况是否更快(忽略额外的检查我'我在做什么)?如果是这样,为什么?如果重要的话,我正在使用 1.46 boost 实现

最佳答案

无序容器上的

findoperator[] 平均为 O(1),最坏情况为 O(n) —— 这取决于哈希的质量功能。

关于c++ - 在 unordered_map 中查找的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com