C++ 具有任意索引范围的类STL向量
当涉及到访问复杂度、调整大小时的重新分配等时,我想要的是类似于STL vector的东西。我想要它支持任意索引范围,例如,可以有从-2到+7或从+5到+10的索引元素。我希望能够有效地推动你前进。我还想双向调整大小C++ 具有任意索引范围的类STL向量,c++,stl,vector,deque,C++,Stl,Vector,Deque,当涉及到访问复杂度、调整大小时的重新分配等时,我想要的是类似于STL vector的东西。我想要它支持任意索引范围,例如,可以有从-2到+7或从+5到+10的索引元素。我希望能够有效地推动你前进。我还想双向调整大小 我知道我自己也可以写这样的东西,但是如果有一个已经编写好的库支持这一点,请告诉我。Deque非常像一个向量,它支持随机访问和结尾的有效插入,也支持开头的有效插入 Map支持基于任意键的访问,您可以拥有任何想要的范围,甚至可以是一个稀疏填充的数组。对集合的迭代很慢 无序映射(tr1)与
我知道我自己也可以写这样的东西,但是如果有一个已经编写好的库支持这一点,请告诉我。Deque非常像一个向量,它支持随机访问和结尾的有效插入,也支持开头的有效插入 Map支持基于任意键的访问,您可以拥有任何想要的范围,甚至可以是一个稀疏填充的数组。对集合的迭代很慢 无序映射(tr1)与映射类似,只是它支持更好的迭代
作为一般的经验法则,使用一个向量(在你的情况下,使它适应你想要的行为),并且只有当你有证据证明该向量导致缓慢时才进行更改。Deque非常类似于一个向量,因为它支持随机访问和结尾处的有效插入,也支持开头处的有效插入 Map支持基于任意键的访问,您可以拥有任何想要的范围,甚至可以是一个稀疏填充的数组。对集合的迭代很慢 无序映射(tr1)与映射类似,只是它支持更好的迭代
作为一般经验法则,使用向量(在您的情况下,使其适应您想要的行为),并且仅当您有证据表明向量导致缓慢时才进行更改。您想要的向量和向量之间的唯一区别似乎是访问元素所需的偏移量,如果通过重载运算符[],您会注意这一点或者别的什么。除非我不明白您所说的双向调整大小是什么意思。看起来您想要的和向量之间的唯一区别是访问元素所需的偏移量,如果通过重载运算符[]或其他方式,您会注意这一点。除非我不明白你所说的双向调整大小是什么意思。如果你想要双向调整大小,等等。。。您可以创建自己的向量类,其中包含2个向量 一个用于0和正值,另一个用于负值
然后,只需实现常用函数并添加新函数(例如:push_开始添加到负索引向量),然后更新内部的对应向量。如果需要双向调整大小,等等。。。您可以创建自己的向量类,其中包含2个向量 一个用于0和正值,另一个用于负值
然后只需实现常用函数并添加新函数(例如:push_开始添加到负索引向量),然后更新内部的对应向量。给你,双端向量 用法:
- 要在
之前保留内存,请使用begin()
reserve(新的后容量、新的前容量)代码>
- 除了使用
、push_-front()
和pop_-front()
时,前电容始终保持不变squeak()
刷新所有未使用的内存squesh()
- 默认
名称空间;stdext
- 在大多数情况下相当于
,但具有向前推的能力::std::vector
- 与
相比没有性能差异(与::std::vector
不同)::std::deque
- 与
::std::vector
- 要在
之前保留内存,请使用begin()
reserve(新的后容量、新的前容量)代码>
- 除了使用
、push_-front()
和pop_-front()
时,前电容始终保持不变squeak()
刷新所有未使用的内存squesh()
- 默认
名称空间;stdext
- 在大多数情况下相当于
,但具有向前推的能力::std::vector
- 与
相比没有性能差异(与::std::vector
不同)::std::deque
- 与
::std::vector
- 给你,双端向量
用法: