c++ - 使用哪种数据结构来查找元素

标签 c++ performance data-structures find

<分区>

我有几个项目保存在一个列表中。我想将已经处理过的项目添加到数据结构中(这对我来说很有意义,尽管您可能想知道为什么)。在处理列表中的下一项时,我首先想确定它之前是否已经处理过,所以让我们这样说:

if(element_is_in_datastructure(current_element)) {
   do this
}
else
{
   do that
   add_element_to_datastructure(current_element)
}

我的问题是,什么是理想的数据结构,在这种情况下检查元素是否在其中不会花费太长时间。目前我没有太多元素(最多 30 个)将被添加到数据结构中,但这个数字可能会增加,我不想失去性能。

最佳答案

您可以使用 map 例如 std::unordered_map 将您的元素存储为 keys。 然后检查他们的存在,例如

if(!yourMap.count(element))
{
   // your element is not in the structure
}

此发现需要 map 大小的对数时间才能完成。

关于c++ - 使用哪种数据结构来查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50561160/

相关文章:

c++ - 不命名类型

c++ - Shader编译失败后能否调用glShaderSource更新Shader源码?

c++ - std::embed 增加链接时间

C++ 添加到包含 Char[] 作为参数的链表

c++ - 它有效,直到我输入第二个输入然后它关闭

c# - 如何将外部列表集成到原始 sql 查询连接作为 linq 原始 sql 查询中的表

performance - 迭代 Scripting.Dictionary/Collection 对象

c - 删除右侧值较大的节点

algorithm - 什么是存储支持添加、删除元组和比较(在 a 或 b 上)的 2 元组 (a, b) 的最佳数据结构)

c++ - 在函数声明中使用 ->