stl中是否有任何数据结构可以在O(1)或O(log n)中插入元素,并且我可以在上面写自己的bin_search?

时间:2019-02-07 20:06:02

标签: c++ data-structures stl

我需要一个可以在O(1)或O(log n)中插入元素的数据结构,并且可以在该数据结构对象上编写自己的二进制搜索功能?如果stl中没有这样的数据结构,该如何编写自己的数据?

3 个答案:

答案 0 :(得分:2)

STL中有一个容器,该容器具有O(1)插入并且可以进行二进制搜索(需要随机访问)。它的名称为O(logn),尽管它没有任何固有的顺序,所以您必须自己提供元素顺序。

std::deque

答案 1 :(得分:0)

听起来您正在尝试学习一些计算机科学基础知识。我建议使用std :: vector作为底层数据结构,以便您可以专注于更高级别的核心服务逻辑,而不是底层底层的内存处理。基于向量,可以为O(log n)插入实现堆。向量具有随机访问迭代器,对于访问分治算法(例如二进制搜索)的集合的“中间”元素很有用。

答案 2 :(得分:-2)

是的,您可以使用堆数据结构,在最坏的情况下需要O(Log n),但在一般情况下需要o(1)