我需要一个可以在O(1)或O(log n)中插入元素的数据结构,并且可以在该数据结构对象上编写自己的二进制搜索功能?如果stl中没有这样的数据结构,该如何编写自己的数据?
答案 0 :(得分:2)
STL中有一个容器,该容器具有或
O(1)
插入并且可以进行二进制搜索(需要随机访问)。它的名称为O(logn)
,尽管它没有任何固有的顺序,所以您必须自己提供元素顺序。
std::deque
答案 1 :(得分:0)
听起来您正在尝试学习一些计算机科学基础知识。我建议使用std :: vector作为底层数据结构,以便您可以专注于更高级别的核心服务逻辑,而不是底层底层的内存处理。基于向量,可以为O(log n)插入实现堆。向量具有随机访问迭代器,对于访问分治算法(例如二进制搜索)的集合的“中间”元素很有用。
答案 2 :(得分:-2)
是的,您可以使用堆数据结构,在最坏的情况下需要O(Log n),但在一般情况下需要o(1)