Java的ArrayList的C ++版本是什么?
回想一下使用C ++并试图转换我最近写的一个简单的Java程序。
相当于C ++中的Java ArrayList的首选项是什么?
使用标准库中的std::vector
类 。
这里有几个附加的要点可以使用vector
。
与Java中的ArrayList
和Array
不同,您不需要做任何特殊的操作就可以将vector
当作一个数组来处理 – C ++中的底层存储保证了连续且有效的索引。
与ArrayList
不同的是,一个vector
可以在没有封装的情况下将原始types有效地保存为一个完整的对象。
从vector
删除项目时,请注意删除项目上方的项目必须向下移动以保留连续存储。 这对于大容器来说可能是昂贵的。
确保将复杂对象存储在其复制构造函数和赋值运算符有效的vector
中。 在封面上,C ++ STL在容器pipe理期间使用这些。
有关reserve()
存储的build议(即在向量构build或初始化时间),以最大限度地减less后续扩展上的内存重新分配,从Javainheritance到C ++。