C++中的vector和Java中的ArrayList的构造函数的区别
2020-11-06 01:15:26
c++
vector
java
arraylist
构造
{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"前言:之前一直存在一个理解误区,以为C++中的"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"存在一个构造函数可以为"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"对象预分配空间,在调试代码时,才发现是自己理解错了,接受一个整数的"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"的构造函数并不是预分配空间,而是直接添加了元素,因此写一篇文章来记录一下。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"C++中的vector"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接受一个整数的"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"的构造函数实际上是直接向"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"对象中添加了元素:"}]},{"type":"codeblock","attrs":{"lang":"cpp"},"content":[{"type":"text","text":"vector arr (10);\ncout << arr.size() << endl; // 10"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果要给"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"对象预分配空间的话,必须使用"},{"type":"codeinline","content":[{"type":"text","text":"reserve()"}]},{"type":"text","text":"成员函数:"}]},{"type":"codeblock","attrs":{"lang":"cpp"},"content":[{"type":"text","text":"vector arr;\narr.reserve(10);\ncout << arr.size() << endl; // 0\ncout << arr.capacity() << endl; // 10"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Java中的ArrayList"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而Java中的"},{"type":"codeinline","content":[{"type":"text","text":"ArrayList"}]},{"type":"text","text":"也有一个类似的构造函数,接受一个整数:"}]},{"type":"codeblock","attrs":{"lang":"java"},"content":[{"type":"text","text":"public ArrayList(int initialCapacity)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"与C++中的"},{"type":"codeinline","content":[{"type":"text","text":"vector"}]},{"type":"text","text":"不同,该构造函数是会预分配空间的,而不是直接添加元素:"}]},{"type":"codeblock","attrs":{"lang":"java"},"content":[{"type":"text","text":"ArrayList arr = new ArrayList<>(10);\nSystem.out.println(arr.size()); // 0"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}