Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有快速插入和索引的容器? < >我正在寻找一个C++容器类,它的索引像 STD::vector < /C>,但是有快速插入、删除和索引。例如,使用底层平衡树实现的vector接口将具有O(logN)插入/删除和O(logN)索引_C++_Vector_Avl Tree - Fatal编程技术网

具有快速插入和索引的容器? < >我正在寻找一个C++容器类,它的索引像 STD::vector < /C>,但是有快速插入、删除和索引。例如,使用底层平衡树实现的vector接口将具有O(logN)插入/删除和O(logN)索引

具有快速插入和索引的容器? < >我正在寻找一个C++容器类,它的索引像 STD::vector < /C>,但是有快速插入、删除和索引。例如,使用底层平衡树实现的vector接口将具有O(logN)插入/删除和O(logN)索引,c++,vector,avl-tree,C++,Vector,Avl Tree,明确地说:我不是在找std::map。在索引N处插入一个元素应增加数组中所有后续元素的索引,而std::map的情况则不同 我已经找到了我想要的东西。它有正确的界面,但我想看看是否还有其他选择 您知道其他(生产质量)实现吗?也许是更受欢迎的东西(boost有类似的东西吗?)。内存占用更小的东西?(在我的机器上,在AVL数组中持有指针的节点是64字节。)想过使用SkipList吗?基本上,它是一个链表,上面添加了多个层次的快捷方式,这些快捷方式被组织成一棵树。没有节点的无序移动,只是一些指针更新。

明确地说:我不是在找
std::map
。在索引
N
处插入一个元素应增加数组中所有后续元素的索引,而
std::map
的情况则不同

我已经找到了我想要的东西。它有正确的界面,但我想看看是否还有其他选择


您知道其他(生产质量)实现吗?也许是更受欢迎的东西(boost有类似的东西吗?)。内存占用更小的东西?(在我的机器上,在AVL数组中持有指针的节点是64字节。)

想过使用SkipList吗?基本上,它是一个链表,上面添加了多个层次的快捷方式,这些快捷方式被组织成一棵树。没有节点的无序移动,只是一些指针更新。快捷方式允许您在列表中更快地迭代。我的最爱之一


你能详细说明一下为什么需要随机访问吗?这似乎离题了——寻找软件/库建议。我认为没有一种更简单的方法(就数据结构而言)可以满足你的需要,因此需要2个ptr表示下一个/上一个,3个ptr表示父/左/右加上原始指针。对于64位环境,总共6个指针=48字节。就内存占用而言,这是你能达到的最低要求(我认为)。如果你能摆脱随机访问的要求,哈希表可能会达到目的——同样,如果你的输入大小小于一百万,移动数组实际上非常便宜——假设你不做太多的重新分配。哦,我忘记了每个节点上的秩变量。