std::inplace_vector<T,N>::emplace
From cppreference.com
< cpp | container | inplace vector
| 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); // throws: no space } catch(const std::bad_alloc& ex) { std::cout << ex.what() << '\n'; } }
実行結果の例
std::bad_alloc
[編集] 関連項目
| 要素を挿入する (公開メンバ関数) | |
| 末尾に要素を直接構築する (公開メンバ関数) |