Java的ArrayList的C ++版本是什么?

回想一下使用C ++并试图转换我最近写的一个简单的Java程序。

相当于C ++中的Java ArrayList的首选项是什么?

使用标准库中的std::vector类 。

这里有几个附加的要点可以使用vector

与Java中的ArrayListArray不同,您不需要做任何特殊的操作就可以将vector当作一个数组来处理 – C ++中的底层存储保证了连续且有效的索引。

ArrayList不同的是,一个vector可以在没有封装的情况下将原始types有效地保存为一个完整的对象。

vector删除项目时,请注意删除项目上方的项目必须向下移动以保留连续存储。 这对于大容器来说可能是昂贵的。

确保将复杂对象存储在其复制构造函数和赋值运算符有效的vector中。 在封面上,C ++ STL在容器pipe理期间使用这些。

有关reserve()存储的build议(即在向量构build或初始化时间),以最大限度地减less后续扩展上的内存重新分配,从Javainheritance到C ++。