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成線性關係。

迭代器有效性

如果發生重新分配,則所有與容器相關的迭代器、指標和引用都將失效。
否則,無變化。

資料競爭

容器被修改。
如果發生重新分配,則所有包含的元素都將被修改。
否則,不訪問任何包含的元素。

異常安全

如果元素的型別是可複製的或可無丟擲移動的,則在發生異常時容器不會發生變化(強保證)。
否則,如果丟擲異常,容器將保持有效狀態(基本保證)。

另見