【发布时间】:2013-01-12 08:57:09
【问题描述】:
我使用的协议是按索引引用列表中的事物。存储这些东西的自然方式是在向量中,所以我可以在恒定时间内随机访问。但是从本质上讲,向量的开头有很多摆弄,包括插入和删除。指数越低,越摆弄。 结果是大量复制向量的其余部分。
我想以相反的方式存储东西,将较低的协议索引存储在较高的向量索引(即较高的地址)上,以最大限度地减少内容转移,但仍然能够按协议索引透明地随机访问元素.理想的容器将是 std::vector 的直接替代品,指针算术等除外。我仍然想要指针算术,但可以自己处理逆序。
周围有这样的课程吗?
也许是一些我找不到的提升容器或一些晦涩难懂的政策?
编辑:实际上,让我感到震惊的是,我可以使用一种在索引0 之前 以及在索引length-1 之后保留空间的向量。 Deque 并没有像我想象的那样构建,它使用大块内存代替,防止指针算术。
【问题讨论】:
-
你可以使用
deque之类的东西。 -
deque在容器开头提供优化的插入,如果这是您需要的唯一类型 -
map不起作用有什么原因吗?它是常数时间,虽然比向量慢,但如果你将它“类似数组”用作键,你就可以解决分配问题。 -
@Gabriel 你计时了吗?这是个问题吗? vector 是最快的容器之一,即使是在移动时也是如此。
-
此问题未指定
标签: c++ vector containers