名前空間
変種
操作

std::inplace_vector<T,N>::emplace

From cppreference.com
 
 
 
 
template< class... Args >
constexpr iterator emplace( const_iterator position, Args&&... args );
(C++26以降)

コンテナの pos の直前に新しい要素を挿入します。通常、要素は、コンテナが提供する場所にインプレースで要素を構築するために、配置 new を使用して構築されます。args... 引数は、std::forward<Args>(args)... としてコンストラクタに転送されます。

目次

[編集] パラメータ

pos - 新しい要素が構築される直前のイテレータ
args - 要素のコンストラクタに転送する引数
型要件
-
T は、MoveAssignableMoveInsertable、および EmplaceConstructible の要件を満たす必要があります。

[編集] 戻り値

挿入された要素へのイテレータ。

[編集] 計算量

posend() の距離に対して線形。

[編集] 例外

呼び出し前に size() == capacity() の場合、std::bad_alloc をスローします。関数は効果を持ちません(強力な例外安全保証)。

挿入された要素の初期化、または任意の LegacyInputIterator 操作によってスローされる例外。 [0pos) の要素は変更されません。

[編集]

#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

[編集] 関連項目

要素を挿入する
(公開メンバ関数) [編集]
末尾に要素を直接構築する
(公開メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)