C++ 中的 vector 和 Java 中的 ArrayList 的构造函数的区别

用户头像
jiangling500
关注
发布于: 2020 年 11 月 04 日

前言:之前一直存在一个理解误区,以为 C++ 中的 vector 存在一个构造函数可以为 vector 对象预分配空间,在调试代码时,才发现是自己理解错了,接受一个整数的 vector 的构造函数并不是预分配空间,而是直接添加了元素,因此写一篇文章来记录一下。

C++ 中的 vector

接受一个整数的 vector 的构造函数实际上是直接向 vector 对象中添加了元素:

vector<string> arr (10);
cout << arr.size() << endl; // 10

如果要给 vector 对象预分配空间的话,必须使用 reserve() 成员函数:

vector<string> arr;
arr.reserve(10);
cout << arr.size() << endl; // 0
cout << arr.capacity() << endl; // 10

Java 中的 ArrayList

而 Java 中的 ArrayList 也有一个类似的构造函数,接受一个整数:

public ArrayList(int initialCapacity)

与 C++ 中的 vector 不同,该构造函数是会预分配空间的,而不是直接添加元素:

ArrayList<String> arr = new ArrayList<>(10);
System.out.println(arr.size()); // 0








发布于: 2020 年 11 月 04 日 阅读数: 820
用户头像

jiangling500

关注

万丈高楼平地起,勿在浮沙筑高台! 2019.12.17 加入

一名IT从业者,熟悉Linux下C/C++,了解MySQL、Java等。

评论

发布
暂无评论
C++中的vector和Java中的ArrayList的构造函数的区别