capacity
提供:cppreference.com
Syntax:
#include <vector> size_type capacity() const;
capacityメソッドはベクタが新たな領域を確保する必要がない現在保持できる最大要素数を返します。
例えば、次のコードは2つのベクタのcapacityを設定する2つの異なるメソッドを使用しています。 1つ目のメソッドは10の要素を0で初期化するようにコンストラクタに引数を渡しています。 そしてもう1つのメソッドは、 reserveメソッドを呼んでいます。 しかし、実際のベクトルのサイズは0のままです。
vector<int> v1(10); cout << "The capacity of v1 is " << v1.capacity() << endl; cout << "The size of v1 is " << v1.size() << endl; vector<int> v2; v2.reserve(20); cout << "The capacity of v2 is " << v2.capacity() << endl; cout << "The size of v2 is " << v2.size() << endl;
上記のコードを実行させた時、次の出力をします:
The capacity of v1 is 10 The size of v1 is 10 The capacity of v2 is 20 The size of v2 is 0
C++コンテナは動的にサイズが変化するようにデザインされています。 これはあいまいな数の要素をコンテナに格納する場合にプログラマの負担を解放します。 しかし、プログラムが使うコンテナのサイズについてコンパイラにヒントをあげることでプログラムの性能を改善することができます。 reserveメソッドやコンストラクタを使うことでコンテナが必要とするサイズをコンパイラに伝えることができます。
capacityメソッドは 定数時間で動作します。