只是重新开始使用C++,并尝试转换我最近编写的一个简单的Java程序。
C++中的Java ArrayList的首选等价物是什么?
发布于 2010-10-19 17:34:25
使用标准库中的std::vector
class。
发布于 2010-10-19 19:11:51
另外几点是在这里重新使用vector
。
与Java语言中的ArrayList
和Array
不同,您不需要做任何特殊的事情来将vector
视为一个数组- C++中的底层存储被保证是连续的和高效的可索引的。
与ArrayList
不同,vector
可以有效地保存原始类型,而无需将其封装为完整的对象。
从vector
中删除项目时,请注意必须将已删除项目上方的项目下移以保留连续的存储空间。对于大型容器来说,这可能会变得很昂贵。
如果您将复杂对象存储在vector
中,请确保它们的复制构造函数和赋值操作符是有效的。在幕后,C++ STL在容器管理过程中使用这些。
关于预先存储reserve()
的建议(即,在向量构造或初始化时),以便在以后的扩展中最小化内存重新分配,从Java到C++。
发布于 2021-07-10 21:43:04
和其他答案一样,最接近的答案是std::vector
。
但有一件重要的事情需要考虑,那就是空间复杂性。
当当前容量已满时,C++向量具有依赖于编译器的计算。当容量满时,一些编译器以指数方式增加向量容量,而一些编译器则以松散的指数方式增加向量容量。
对于Java arraylist,当容量已满时,标准没有指定确切的详细信息来重新计算容量。有些人的粗略计算是150%加1。但不确定这是否是准确的计算。
https://stackoverflow.com/questions/3971049
复制相似问题