public member function
<vector>

std::vector::shrink_to_fit

void shrink_to_fit();
收缩到合适大小
请求容器将其capacity缩减至等于其size

该请求是非约束性的,容器实现可以自行优化,并使vectorcapacity大于其size

这可能会导致重新分配,但不会影响vector size,也不能改变其元素。

参数



返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// vector::shrink_to_fit
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector (100);
  std::cout << "1. capacity of myvector: " << myvector.capacity() << '\n';

  myvector.resize(10);
  std::cout << "2. capacity of myvector: " << myvector.capacity() << '\n';

  myvector.shrink_to_fit();
  std::cout << "3. capacity of myvector: " << myvector.capacity() << '\n';

  return 0;
}

可能的输出
1. capacity of myvector: 100
2. capacity of myvector: 100
3. capacity of myvector: 10


复杂度

最多与container size成线性关系。

迭代器有效性

如果发生重新分配,则所有与容器相关的迭代器、指针和引用都将失效。
否则,无变化。

数据竞争

容器被修改。
如果发生重新分配,则所有包含的元素都将被修改。
否则,不访问任何包含的元素。

异常安全

如果元素的类型是可复制的或可无抛出移动的,则在发生异常时容器不会发生变化(强保证)。
否则,如果抛出异常,容器将保持有效状态(基本保证)。

另见