学习
实践
活动
专区
工具
TVP
写文章

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

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券