C ++固定大小的容器,带有可交换元素

时间:2011-07-05 09:30:43

标签: c++ stl containers

我正在搜索具有以下功能的容器:

  • 运行时固定大小。因此,内存不应该以小块的形式分配(如std::list那样)。
  • 元素应该是可交换的(类似std::list::splice提供的内容)。

修改 想一个列表:我只需要将元素从任意位置移动到前面。 EDIT2: 我想使用std::list之类的东西,但是利用运行时固定大小。

4 个答案:

答案 0 :(得分:3)

我想到TR1数组:

std::array<T, int>

或者,如果你还没有,

boost::array<T, int>

对于所有意图和目的而言,这是相同的。当然,std :: swap on elements的有效性取决于正确的拷贝构造函数/赋值运算符的可用性。

答案 1 :(得分:2)

我不太清楚你在寻找什么。我想到了两个解决方案:std::vector(使用最大大小创建),以及对象的swap的良好实现,或std::list的自定义分配器,它预先分配单个块中需要的节点数。

答案 2 :(得分:0)

您可以在施工时指定std::list的(初始)尺寸:

std::list<Type> myList = std::list<Type>(10);

之后你仍然可以增长/缩小它,但该列表将从一开始就包含10个默认构造的Type对象。

这是否符合您的需求?

答案 3 :(得分:0)

std :: vector?

基于数组。可以指定大小并具有交换功能。

你还没有说过你将使用它,所以我真的不知道你是否会遇到任何速度问题。