首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

C++中的vector

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

代码语言:javascript
复制

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

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

代码语言:javascript
复制

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

Java中的ArrayList

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

代码语言:javascript
复制
public ArrayList(int initialCapacity)

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

代码语言:javascript
复制

ArrayList<String> arr = new ArrayList<>(10);
System.out.println(arr.size()); // 0
  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/9651cff33cfa48cd4b63f2f94
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券