C++中的vector和Java中的ArrayList的构造函数的区别
前言:之前一直存在一个理解误区,以为 C++ 中的 存在一个构造函数可以为 对象预分配空间,在调试代码时,才发现是自己理解错了,接受一个整数的 的构造函数并不是预分配空间,而是直接添加了元素,因此写一篇文章来记录一下。
C++ 中的 vector
接受一个整数的 的构造函数实际上是直接向 对象中添加了元素:
vector arr (10);
cout << arr.size() << endl; // 10
如果要给 对象预分配空间的话,必须使用 成员函数:
vector arr;
arr.reserve(10);
cout << arr.size() << endl; // 0
cout << arr.capacity() << endl; // 10
Java 中的 ArrayList
而 Java 中的 也有一个类似的构造函数,接受一个整数:
public ArrayList(int initialCapacity)
与 C++ 中的 不同,该构造函数是会预分配空间的,而不是直接添加元素:
ArrayList arr = new ArrayList<>(10);
System.out.println(arr.size()); // 0
