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

微信扫一扫,分享到朋友圈

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



前言:之前一直存在一个理解误区,以为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 =newArrayList<>(10);
System.out.println(arr.size());// 0



微信扫一扫,分享到朋友圈

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

我们计划招收300名学员,免费学习Python课程

上一篇

阿里巴巴2021财年第二季度营收1550.59亿元 同比增长30%

下一篇

你也可能喜欢

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

长按储存图像,分享给朋友