用于查找元素的数据结构
Which datastructure to use for finding an element
我在一个列表中保存了几个项目。我想将已经处理的项目添加到数据结构中(这在我的情况下是有意义的,即使你可能想知道为什么(。在处理列表中的下一项时,我首先要确定它之前是否已经处理过,所以让我们这样说:
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
}
此发现需要地图大小的对数时间才能完成。
相关文章:
- 设计将引用元素移动到开头的数据结构.C++
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- unordered_set是否适合存储矢量<int>元素的数据结构?如果是这样,我将如何实现哈希函数?
- 用于查找元素的数据结构
- C++ 数据结构队列:使用 for 循环查找队列中最大的元素
- 从右到左计算当前索引中的数据结构中的元素数,并打印每个元素的计数
- 嵌套的C 常数数据结构,没有初始化列表或明确命名所有节点-VC 2012过早破坏了内部元素
- stl 中是否有任何数据结构可以在 O(1) 或 O(log n) 中插入元素,我可以在其上编写自己的bin_searc
- 如何在将数据结构插入元素后继续迭代数据结构
- 用于随机访问和元素循环的最佳数据结构(C++)
- 如何实现数据结构,就像C 中的数组一样支持不同的类型元素
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- 访问地图数据结构中的结构元素
- 在Haskell中使用O(1)元素访问实现高效的类似拉链的数据结构
- 正确的数据结构,用于在C++中存储最后 n 个元素
- 为什么当我尝试访问 CvMat 数据结构成员的第一个元素时,我会得到这个 ^@
- C++数据结构,用于存储两组唯一元素之间的多个关系
- 从中间删除元素的最佳数据结构是什么
- 更改一组数据结构中元素的值