C++中用于插入和删除的最佳数据结构/容器
Best data structure/ container in C++ for insertion and deletion
我正在寻找C++的最佳数据结构,其中插入和删除可以非常有效和快速地进行。
对于此数据结构,遍历也应该非常容易。我应该选择哪一个?C++中的SET怎么样?
链表提供任意元素的有效插入和删除。此处的删除是通过迭代器删除,而不是按值删除。遍历非常快。
取消排队仅在末端提供有效的插入和删除,但这些比链表更快,并且遍历也更快。
只有当您想按元素的值查找元素时,集合才有意义,例如删除它们。否则,检查重复项以及保持事物排序的开销将被浪费。
这取决于您要放入此数据结构的内容。如果项目是无序的,或者您关心它们的顺序,则可以使用list<>。如果您希望它们按排序顺序排列,set<> 或 multiset<>(后者允许多个相同的元素)可能是一种替代方法。
list<> 通常是一个双向链表,因此插入和删除可以在恒定时间内完成,前提是您知道位置。 遍历所有元素也很快,但访问指定的元素(按值或按位置)可能会变慢。
set<> 及其族通常是二叉树,因此插入、删除和搜索元素大多以对数时间为对数时间(当您知道在哪里插入/删除时,它是常量时间)。遍历所有元素也很快。
(注意:boost 和 C++11 都有基于哈希表的数据结构,这也是一种选择)
我会说一个链表,这取决于你是否删除是特定的,而且经常。 关于它的迭代器。
我突然想到,你需要一棵树。
我不确定确切的结构(因为您没有提供详细信息),但是如果您可以将数据放入二叉树中,则可以在搜索,删除和插入元素时获得不错的速度(O(logn)平均值和O(n)最坏情况)。
请注意,我在这里谈论的是数据结构,您可以通过不同的方式实现它。
相关文章:
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- 用于存储分组关系和支持外观的最佳数据结构
- 适用于频繁更改的大型数据集的最佳数据结构
- 点遍历的最佳数据结构
- 代表软件包安装和系统依赖关系的最佳数据结构
- 数字序列的最佳数据结构 [0:9]
- 用于在具有更新查询的二维矩阵中查找最大值的最佳数据结构
- 哪种数据结构是在一个向量中搜索和计数对象对的最佳数据结构
- 最佳数据结构存储文本文件中的数字集
- 用于随机访问和元素循环的最佳数据结构(C++)
- 可用于存储和管理整数集合的最佳C++数据结构是什么
- 使用C 中的单元格 /图块 /网格进行碰撞检测的最佳数据结构
- A*开放集的最佳数据结构是什么
- C++中用于插入和删除的最佳数据结构/容器
- 什么是支持优先级、更新、推送和弹出的最佳数据结构
- 从中间删除元素的最佳数据结构是什么
- 排序列表的最佳数据结构(性能)
- 寻找适合工作的最佳数据结构
- 压缩2D曲线的最佳数据结构/算法是什么?
- 返回表值计数的最佳R数据结构