最終更新日時:
が更新

履歴 編集

function
<hive>

std::hive::shrink_to_fit(C++26)

void shrink_to_fit(); // (1) C++26

概要

容量を要素数に近づける。

事前条件

T*thisに対してムーブ挿入可能であること。

効果

capacity()size()に近づけるという非拘束の(non-binding)リクエストを行う。

  • このリクエストは、実装依存の最適化を許可するために非拘束である。
  • この関数によってcapacity()が増えることはないが、capacity()が縮小することはある。
  • 要素の再割り当てが発生する場合がある。
  • capacity()がすでにsize()と等しい場合、何もしない。
  • 新たな要素ブロックの確保中に例外が送出された場合、capacity()が縮小されることや再割り当てが発生することがある。それ以外で例外が送出された場合、効果は未規定である。

戻り値

なし

計算量

再割り当てが発生した場合、シーケンスのサイズに対して線形時間

備考

再割り当てが発生した場合、*thisの要素の順序が変わる可能性があり、*thisの要素を指す全ての参照・ポインタ・イテレータ、および終端イテレータは無効になる。

#include <hive>
#include <print>

int main()
{
  std::hive<int> h;
  h.reserve(100);
  std::println("capacity >= 100 : {}", h.capacity() >= 100);

  h.insert(1);
  h.insert(2);
  h.insert(3);

  // 容量を要素数に近づけるよう要求する
  h.shrink_to_fit();
  std::println("size = {}", h.size());
}

出力

capacity >= 100 : true
size = 3

バージョン

言語

  • C++26

処理系

関連項目

参照