名前空間
変種
操作

std::vector::emplace

提供: cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
template< class... Args >
iterator emplace( const_iterator pos, Args&&... args );
(C++11以上)

新しい要素を pos の前に直接挿入します。 要素は std::allocator_traits::construct を通して構築されます。 これは一般的にはコンテナによって提供される位置に要素をその場で構築するために placement new を使用します。 引数 args... はコンストラクタに std::forward<Args>(args)... として転送されます。

新しい size()capacity() より大きい場合は、すべてのイテレータおよび参照が無効化されます。 そうでなければ、挿入位置より前のイテレータおよび参照のみが有効なまま残されます。 終端イテレータも無効化されます。

目次

[編集] 引数

pos - 前に新しい要素が構築されるイテレータ
args - 要素のコンストラクタに転送される引数
型の要件
-
T (コンテナの要素型)MoveAssignable, MoveInsertable および EmplaceConstructible の要件を満たさなければなりません。

[編集] 戻り値

挿入された要素を指すイテレータ。

[編集] 計算量

pos とコンテナの終端の距離に比例。

[編集] 例外

値の型のコピーコンストラクタ、ムーブコンストラクタ、代入演算子、ムーブ代入演算子以外によって例外が投げられたか、終端に単一の要素を挿入するために emplace が使用されている間に例外が投げられ、値の型が CopyInsertable または無例外ムーブ構築可能である場合は、何の効果もありません (強い例外保証)。

そうでなければ、その効果は未規定です。


ノート

特殊化 std::vector<bool> には C++ 14 まで emplace() メンバがありませんでした。

[編集] 関連項目

要素を挿入します
(パブリックメンバ関数) [edit]