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
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
参照
- P0447R28 Introduction of
std::hiveto the standard library- C++26で
hiveが追加された
- C++26で