std::vector reserve的作用是什么
时间: 2024-01-22 21:02:31 浏览: 134
Vector:C++ 实现vector
`std::vector::reserve()` 函数用于预留存储空间,以便在不重新分配内存的情况下存储更多的元素。该函数并不会改变 `vector` 的大小,只是增加了 `vector` 的容量。
当使用 `push_back()` 或者 `insert()` 等函数向 `vector` 中添加元素时,如果当前容量不足,`vector` 将会重新分配内存。这个过程会导致之前存储的元素被复制到新的内存空间里,然后释放之前的内存。这个操作的时间复杂度为 $O(n)$,其中 $n$ 是 `vector` 当前存储的元素个数。
使用 `reserve()` 函数可以避免频繁地重新分配内存,从而提高程序的效率。如果已经知道在未来需要存储的元素数量,可以在添加元素之前使用 `reserve()` 函数来提前分配足够的内存空间。
例如,以下代码会先分配 100 个元素的存储空间,然后向 `v` 中添加 50 个元素:
```c++
std::vector<int> v;
v.reserve(100);
for (int i = 0; i < 50; i++) {
v.push_back(i);
}
```
在这个例子中,`reserve()` 函数确保了在添加元素时不会频繁地重新分配内存,从而提高了程序的效率。
阅读全文