同時拡張

次の表で説明されているメソッドは、同じベクトルで同時に呼び出すことができる場合があります。
メンバー 説明

iterator grow_by( size_type delta )

iterator grow_by( size_type delta, const_reference t )

ベクトルの最後に delta の新しい要素で構成されるシーケンスを追加します。第 2 引数 t が指定された場合、新しい要素は t をコピーして初期化されます。その他の場合、新しい要素はデフォルト設定で構築されます。

戻り値: 追加されたシーケンスの最初を指すイテレーター。

template<typename ForwardIterator> iterator grow_by( ForwardIterator first, ForwardIterator last )

シーケンス [first,last) の各要素をコピーして、ベクトルにシーケンスを追加します。

戻り値: 追加されたシーケンスの最初を指すイテレーター。

iterator grow_by( std::initializer_list<T> il )

C++11 仕様。初期化子リストから各要素をコピーして、ベクトルにシーケンスを追加します。

戻り値: 追加されたシーケンスの最初を指すイテレーター。

iterator grow_to_at_least( size_type n )

iterator grow_to_at_least( size_type n, const_reference t )

vector.size()>=n になるように、要素の最小シーケンスを追加します。第 2 引数 t が指定された場合、新しい要素は t をコピーして初期化されます。その他の場合、新しい要素はデフォルト設定で構築されます。範囲 [0..n) のすべての要素が割り当てられるまでブロックします (ただし、別のスレッドで構築中の場合、要素は構築済みでなくてもかまいません)。

ヒント

要素の構築が完了したかどうかをスレッドが把握しなければならない場合は、次の手法を検討してください。zero_allocator を使用して concurrent_vector を具体化します。完了時に T のフィールドを非ゼロに設定するようにコンストラクター T() を定義します。スレッドは、フィールドが非ゼロかどうかを確認することで、concurrent_vector のアイテムが構築済みかどうかを確認できます。

戻り値: 追加されたシーケンスの最初を指すイテレーター、または追加された要素がない場合は (*this)[n] へのポインター。

iterator push_back( const_reference value )

ベクトルの最後に value のコピーを追加します。

戻り値: コピーを指すイテレーター。

iterator push_back( T&& value )

C++11 仕様。ベクトルの最後に追加された新しい要素に value を移動します。

戻り値: 新しい要素を指すイテレーター。

template<typename... Args> iterator emplace_back( Args&&... args );

C++11 仕様。ベクトルの最後に新しい要素を追加します。要素は指定された引数で構築されます。

戻り値: 新しい要素を指すイテレーター。