std:: vector
|
ヘッダーで定義
<vector>
|
||
|
template
<
class
T,
|
(1) | |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (C++17以降) |
std::vector
は動的サイズ配列をカプセル化するシーケンスコンテナです。
std::vector<bool>
の部分特殊化を除いて、要素は連続して格納されています。これは、イテレータを通じてだけでなく、通常の要素ポインタへのオフセットを使用して要素にアクセスできることを意味します。つまり、ベクターの要素へのポインタは、配列の要素へのポインタを期待する任意の関数に渡すことができます。
ベクターのストレージは自動的に管理され、必要に応じて拡張されます。ベクターは通常、静的配列よりも多くの領域を占有します。これは将来の拡張に対応するためにより多くのメモリが割り当てられるためです。この方式により、要素が挿入されるたびに再割り当てを行う必要がなく、追加メモリが枯渇した時点でのみ再割り当てが発生します。割り当て済みメモリの総量は capacity() 関数を使用して問い合わせることができます。余分なメモリは shrink_to_fit() [1] の呼び出しによってシステムに返還できます。
再割り当ては通常、パフォーマンスの観点でコストの高い操作です。 reserve() 関数は、要素数が事前に分かっている場合に再割り当てを排除するために使用できます。
ベクトルに対する一般的な操作の計算量(効率)は以下の通りです:
- ランダムアクセス - 定数時間 𝓞(1) 。
- 末尾への要素の挿入または削除 - 償却定数時間 𝓞(1) 。
- 要素の挿入または削除 - ベクターの末尾からの距離に対して線形時間 𝓞(n) 。
std::vector
(
T
が
bool
以外の場合)は、
Container
、
AllocatorAwareContainer
(C++11以降)
、
SequenceContainer
、
ContiguousContainer
(C++17以降)
および
ReversibleContainer
の要件を満たします。
std::vectorのすべてのメンバー関数は
std::vector
である
constexpr
:定数式の評価において
std::vector
オブジェクトを作成および使用することが可能です。
しかしながら、
|
(C++20以降) |
目次テンプレートパラメータ
特殊化
標準ライブラリは、
イテレータの無効化
メンバ型
メンバー関数
非メンバー関数
注記
例
このコードを実行
出力: 8 4 -1 9 6 9 不具合報告以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
関連項目
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||