std::inplace_vector<T,N>:: emplace
|
template
<
class
...
Args
>
constexpr iterator emplace ( const_iterator position, Args && ... args ) ; |
(C++26以降) | |
コンテナに新しい要素を pos の直前に直接挿入します。通常、要素は配置 new を使用して、コンテナが提供する位置でその場で構築されます。引数 args... はコンストラクタに std:: forward < Args > ( args ) ... として転送されます。
| このセクションは不完全です |
目次 |
パラメータ
| pos | - | 新しい要素が構築される前のイテレータ |
| args | - | 要素のコンストラクタに転送される引数 |
| 型要件 | ||
-
T
は以下の要件を満たさなければならない:
MoveAssignable
,
MoveInsertable
および
EmplaceConstructible
.
|
||
戻り値
挿入された要素へのイテレータ。
計算量
pos と end() の間の距離に対して線形。
例外
サイズが呼び出し前に size ( ) == capacity ( ) の場合、 std::bad_alloc をスローします。この関数は副作用を持ちません( 強例外安全保証 )。
挿入された要素の初期化、または任意の
LegacyInputIterator
操作によってスローされる例外。範囲
[
0
,
pos
)
内の要素は変更されません。
例
#include <cassert> #include <inplace_vector> #include <new> #include <utility> int main() { using P = std::pair<int, int>; using I = std::inplace_vector<P, 3>; auto nums = I{{0, 1}, {2, 3}}; auto it = nums.emplace(nums.begin() + 1, -1, -2); assert((*it == P{-1, -2})); assert((nums == I{P{0, 1}, {-1, -2}, {2, 3}})); try { nums.emplace(nums.begin(), 1, 3); // スロー: 空き領域なし } catch(const std::bad_alloc& ex) { std::cout << ex.what() << '\n'; } }
出力例:
std::bad_alloc
関連項目
|
要素を挿入する
(公開メンバ関数) |
|
|
末尾に要素をその場で構築する
(公開メンバ関数) |