最終更新日時:
が更新

履歴 編集

function
<vector>

std::vector::shrink_to_fit(C++11)

void shrink_to_fit();

概要

領域をコンテナのサイズまで切り詰める

要件

  • T*thisに対してムーブ挿入可能であること (C++14)

戻り値

なし

計算量

最大で、要素数に対して線形時間 (C++14)

備考

capacity()size()に縮小させるというリクエストを行う。

実装依存の最適化を許可するために、縮小するという動作は仕様上強制されない。

非コピー挿入可能な型Tのムーブコンストラクタが例外を送出した場合、この関数は何もしない。 (C++14)

#include <iostream>
#include <vector>
#include <cassert>

int main()
{
  std::vector<int> v = {1, 2, 3};

  std::cout << v.capacity() << std::endl;

  // 要素削除 : capacityは減らない
  v.erase(v.begin());
  std::cout << v.capacity() << std::endl;

  // 領域を切り詰める
  v.shrink_to_fit();
  std::cout << v.capacity() << std::endl;
  assert(v.capacity() == v.size());
}

出力

3
3
2

バージョン

言語

  • C++11

処理系

参照