c ++中数组的动态大小?

cel*_*lta 0 c++ arrays containers list vector

我很迷惑.我不知道应该使用哪些容器.我先告诉你我需要什么.基本上我需要一个可以存储X个Object的容器(并且对象的数量是未知的,它可能是1到50k).

我读了很多,在这里数组vs列表它说:如果对象的数量未知(我不知道如何在C++中调整数组的大小),数组需要调整大小,并且它还声明如果使用链表,如果你想搜索某个项目,它将从第一个到第二个循环(迭代)(反之亦然),而数组可以指定"索引处的数组对象".

然后我去了另一个解决方案,地图,矢量等.像这一个:数组与矢量.一些响应者说从不使用数组.

我是C++的新手,我之前只使用过数组,向量,列表和地图.现在,就我的情况而言,你建议我使用什么样的容器?让我重新说一下我的要求:

  • 需要成为一个容器
  • 存储的对象数量未知但是很大(可能是1到40k)
  • 我需要遍历容器来查找特定对象

Alo*_*ave 6

std :: vector是你需要的.
选择stl容器时,您必须考虑两件事.

  1. 您要存储的数据
  2. 要对存储的数据执行的操作

在这里有一个关于SO的问题的一个很好的图表,它描绘了这个,我找不到它的链接,但我很久以前就把它保存了,这里是: STL容器选择流程图

  • 不错的图表,但它缺乏警告:*几个*对象? - >`vector`. (2认同)
  • 实际上,这是一个非常糟糕的图表,因为它忽略了一个主要问题(迭代器的有效性)并做出一些不合理的假设:需要在中间插入直接到`list`,但`vector`也支持插入中间,即使插入中间,也优于"列表". (2认同)