我想要的是类似于STL向量的访问复杂性,调整大小时的重新分配等等。我希望它支持任意索引范围,例如可能有从-2到+7索引或从+开始的元素5到+10。我希望能够有效地推送前端。我也希望双向调整大小...
我知道我自己可以写这样的东西,但是如果有一个已经写好的库支持这个,请告诉我。
答案 0 :(得分:3)
Deque非常像一个向量,因为它支持随机访问和最后的有效插入,并且它还支持在开头有效插入。
Map支持基于任意键的访问,您可以拥有任何所需的范围,甚至是稀疏填充的数组。对集合的迭代很慢。
无序地图(tr1)类似于地图,但它支持更好的迭代。
作为一般经验法则,使用向量(在您的情况下使其适应您想要的行为),并且只有在您有证据表明向量导致缓慢时才会更改。
答案 1 :(得分:2)
看起来你想要的和矢量之间的唯一区别就是访问元素所需的偏移量,如果通过重载operator []或其他东西你需要注意。除非我不理解双向调整大小的意思。
答案 2 :(得分:1)
你去,双端矢量
http://dl.dropbox.com/u/9496269/devector.h
<强>用法:强>
在begin()
之前保留记忆,使用reserve(new_back_capacity, new_front_capcity);
除了使用push_front()
,pop_front()
和squeeze()
时,始终保留前排城市。
squeeze()
刷新所有未使用的内存
默认namespace; stdext
<强>概念强>
在大多数情况下等同于::std::vector
但具有push_front的能力
与::std::vector
相比没有性能差异(与::std::deque
不同)
与::std::vector
答案 3 :(得分:0)
如果你想要2路调整等等...你可以创建自己的矢量类,里面有2个矢量 一个用于0和正值,另一个用于负值。
然后只需实现常用函数并添加新函数(例如:push_begin添加到负索引向量),并更新内部的correspndent向量。