C++-具有对数读数的列表,插入给定位置
C++ - List with logarithmic read, insertion at given position
我正在寻找一种行为类似列表的数据结构,在这里我们可以在任意给定位置插入一个元素,然后在任意给定的位置读取一个元素。在这里,插入和读取应该在对数时间内。在标准库中有这样的东西吗?或者我不得不自己写(我知道它可以实现为树)?
std::multiset
的行为与您正在查找的的对数std::list
非常相似
- 迭代是双向的
- 插入/读取为
O(log N)
然而,请注意(正如@SergeRoatch所指出的),您为O(log N)
查找(而不是O(N)
查找list
)支付的"价格"multiset
将在元素插入时对其进行排序。这与std::list
的行为不同。这也意味着您的元素需要使用std::less<>
进行比较,或者您需要提供自己的比较器。
另一种选择是使用std::unordered_multiset
(即哈希表),它有amortized O(1)
元素访问,但也没有确定的顺序。但是,您的元素需要与std::hash<>
一起使用,或者您需要编写自己的哈希函数。
相关文章:
- 将一个向量插入另一个向量的某个位置
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 如何在另一个字符串的x位置插入一个字符串?
- 将多个值插入到特定位置的矢量中
- 使用unique_ptr插入单个链表的位置
- 插入到双向链表中的特定位置
- 如何在向量中保存位置以供以后插入?
- 创建一个函数以在给定位置将元素插入到列表中
- 有没有办法在unordered_map的某个位置插入元素
- C 从特定位置插入其他向量中的载体
- 如何处理更改插入符号位置的事件
- 有没有一种方法可以在std::向量的特定位置重复插入元素
- 在链表中的第 n 个位置插入节点
- 如何将向量插入2D矢量的定义位置
- 使用 C++ 在单向链表的指定位置插入节点时出现分段错误
- 在文件中的任意位置插入动态大小对象
- 通过指定第 n 个节点位置在单链接列表中插入数据
- 在Embarcadero Tools API中的光标位置插入文本
- 在链接列表C 中的某个位置插入节点
- 字符串流的不同插入位置