前言:之前一直存在一个理解误区,以为C++中的vector
存在一个构造函数可以为vector
对象预分配空间,在调试代码时,才发现是自己理解错了,接受一个整数的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
也有一个类似的构造函数,接受一个整数:
public ArrayList(int initialCapacity)
与C++中的vector
不同,该构造函数是会预分配空间的,而不是直接添加元素:
ArrayList<String> arr = new ArrayList<>(10);
System.out.println(arr.size()); // 0
领取专属 10元无门槛券
私享最新 技术干货