最終更新日時(UTC):
が更新

履歴 編集

function
<string>

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

void shrink_to_fit();           // (1) C++11
constexpr void shrink_to_fit(); // (1) C++20

概要

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

効果

  • capacity()size()に縮小させるリクエストを行う。
    • 実装依存の最適化を許可するために、縮小するという動作は仕様上強制されない。
  • C++17 : この関数によってcapacity()が増えることはない。
  • C++17 : capacity()の縮小が起こる際に、メモリの再割り当てが発生する場合がある。その際、文字列の要素に対する参照、ポインタ、およびイテレータとそれが指す要素への参照は無効となる。

戻り値

なし

計算量

  • C++17 : 最大で、要素数に対して線形時間

#include <iostream>
#include <string>

int main()
{
  std::wstring s = L"The quick brown fox jumps over the lazy dog";

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

  // 要素削除 : capacityは減らない
  s.erase(s.begin() + 8, s.end());
  std::cout << s.capacity() << std::endl;

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

出力例

47
47
15

実装例

void basic_string::shrink_to_fit() {
  swap(basic_string(*this));
}

バージョン

言語

  • C++11

処理系

関連項目

参照