首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java的ArrayList的C++版本是什么

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

Stack Overflow用户
提问于 2010-10-20 01:33:54
回答 3查看 152K关注 0票数 85

只是重新开始使用C++,并尝试转换我最近编写的一个简单的Java程序。

C++中的Java ArrayList的首选等价物是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-20 01:34:25

使用标准库中的std::vector class

票数 96
EN

Stack Overflow用户

发布于 2010-10-20 03:11:51

另外几点是在这里重新使用vector

与Java语言中的ArrayListArray不同,您不需要做任何特殊的事情来将vector视为一个数组- C++中的底层存储被保证是连续的和高效的可索引的。

ArrayList不同,vector可以有效地保存原始类型,而无需将其封装为完整的对象。

vector中删除项目时,请注意必须将已删除项目上方的项目下移以保留连续的存储空间。对于大型容器来说,这可能会变得很昂贵。

如果您将复杂对象存储在vector中,请确保它们的复制构造函数和赋值操作符是有效的。在幕后,C++ STL在容器管理过程中使用这些。

关于预先存储reserve()的建议(即,在向量构造或初始化时),以便在以后的扩展中最小化内存重新分配,从Java到C++。

票数 63
EN

Stack Overflow用户

发布于 2021-07-11 05:43:04

和其他答案一样,最接近的答案是std::vector

但有一件重要的事情需要考虑,那就是空间复杂性。

当当前容量已满时,C++向量具有依赖于编译器的计算。当容量满时,一些编译器以指数方式增加向量容量,而一些编译器则以松散的指数方式增加向量容量。

对于Java arraylist,当容量已满时,标准没有指定确切的详细信息来重新计算容量。有些人的粗略计算是150%加1。但不确定这是否是准确的计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3971049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档