swap函数缩小vector容量
时间: 2023-11-21 14:42:29 浏览: 57
vector的使用以及函数示例
要缩小vector的容量,可以使用成员函数 `shrink_to_fit()`。这个函数会将vector的容量调整为它当前所包含的元素数量,但请注意,这只是一个请求,具体是否生效取决于实现。
以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {1, 2, 3, 4, 5};
std::cout << "Before shrink_to_fit(): Capacity = " << vec.capacity() << std::endl;
vec.shrink_to_fit();
std::cout << "After shrink_to_fit(): Capacity = " << vec.capacity() << std::endl;
return 0;
}
```
输出结果为:
```
Before shrink_to_fit(): Capacity = 5
After shrink_to_fit(): Capacity = 5
```
注意,即使使用了`shrink_to_fit()`函数,容量也不一定会改变。这是因为vector的实现是基于动态数组,可能会保留一些额外的容量以便进行扩展。如果你希望强制缩小容量,可以使用以下方法:
```cpp
std::vector<int>(vec).swap(vec);
```
这样会创建一个临时的vector,并将其与原有的vector进行swap操作,从而释放掉原vector的额外容量。请注意,这操作会导致vector中的元素被复制一次,所以在处理大型vector时需要谨慎使用。
阅读全文