C++ 用于中间插入和随机访问的高性能顺序容器

C++ 用于中间插入和随机访问的高性能顺序容器,c++,containers,big-o,C++,Containers,Big O,我正在做一个小纸牌游戏,由于游戏规则古怪需要经常做 中间插入和频繁的随机访问。我使用了一个std::list来实现这个,那就是 对于PvsP来说,有足够快的利润,但现在我正在制作AI,它使用蛮力 为了找到一个好的移动,游戏是确定的,他们的大动作是痛苦的 现在谈谈我的问题;是否有一个自由的、连续的、可能基于树的、类似STL的, 经过良好测试的容器,大O不超过logn,用于中间插入和随机访问 注意:我不是在寻找关联容器 更新:我发现了一个叫做AVL数组的东西,它可以满足我的需要。它满足除“经过良好测

我正在做一个小纸牌游戏,由于游戏规则古怪需要经常做 中间插入和频繁的随机访问。我使用了一个std::list来实现这个,那就是 对于PvsP来说,有足够快的利润,但现在我正在制作AI,它使用蛮力 为了找到一个好的移动,游戏是确定的,他们的大动作是痛苦的

现在谈谈我的问题;是否有一个自由的、连续的、可能基于树的、类似STL的, 经过良好测试的容器,大O不超过logn,用于中间插入和随机访问

注意:我不是在寻找关联容器

更新:我发现了一个叫做AVL数组的东西,它可以满足我的需要。它满足除“经过良好测试”之外的所有要求。它给了我希望的速度,但不幸的是,析构函数似乎有车而且很慢

新的更新:我的AVL数组的所有问题都是由我的调试器引起的!,和
我现在已经决定了。

一款小型纸牌游戏听起来对性能并不太重要。所以,我的第一个选择是std::vector。在中间插入所花费的时间将按插入次数乘以元素大小的顺序排列。我怀疑其中任何一个都是非常巨大的,在数百万个元素、百万个插入或kb大小的元素中有着巨大的意义

尝试使用手头有容器的实现,并进行性能度量。您拥有的列表可能会使随机访问成为性能损失,而std::vector中的随机访问是O1。另一方面,中间插入在std::list中可能是最快的,但是如果向量元素很小,那么插入主要是一个简单的memmove,并且不是很昂贵


通常,当有疑问时,请使用探查器。这是包括其他人在内的唯一可以告诉您编译器优化代码有多好的东西。

middle inserts=在列表中间插入?在本例中,列表是否已排序或类似于此的内容?在本例中,中间插入是在非两端的任何位置插入。列表未排序到底什么是std样的?OMGtechy:类似于std-library中的函数/类。如果列表未排序,您当前如何查找随机元素?你能准确地检索他的索引吗?还是你必须迭代?性能关键的部分是人工智能的蛮力部分。它的工作原理类似于您执行国际象棋程序的方式。如果我能让它更快,它可以搜索得更深,玩得更好。