Namespaces
Variants

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

From cppreference.net
template < class ... Args >
constexpr pointer try_emplace_back ( Args && ... args ) ;
(C++26以降)

条件付きで型 T のオブジェクトをコンテナの末尾に追加します。

size ( ) == capacity ( ) true の場合、効果はない。それ以外の場合、 std:: forward < Args > ( args ) ... による直接非リスト初期化で型 T のオブジェクトを追加する。

イテレータおよび参照は無効化されません。ただし、 end() は、挿入が発生した場合に無効化されます。

目次

パラメータ

args - 要素のコンストラクタに転送する引数
型要件
-
T EmplaceConstructible でなければならず、 inplace_vector 内で std:: forward < Args > ( args ) ... から構築可能であること。

戻り値

std:: addressof ( back ( ) ) size size ( ) < capacity ( ) の場合、 nullptr それ以外の場合。

計算量

定数。

例外

挿入された要素の初期化によって送出されるあらゆる例外。何らかの理由で例外が送出された場合、この関数は何も効果を持ちません( strong exception safety guarantee )。

注記

#include <cassert>
#include <complex>
#include <inplace_vector>
int main()
{
    using namespace std::complex_literals;
    using C = std::complex<double>;
    using I = std::inplace_vector<C, 3>;
    auto v = I{1.0 + 2.0i, 3.0 + 4.0i};
    C* c = v.try_emplace_back(5.0, 6.0);
    assert(*c == 5.0 + 6.0i);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));
    c = v.try_emplace_back(7.0, 8.0); // 空き容量なし => 挿入なし
    assert(c == nullptr);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));
}

関連項目

末尾に要素をその場で構築する
(公開メンバ関数)
末尾に要素を追加する
(公開メンバ関数)
末尾に要素の範囲を追加する
(公開メンバ関数)
末尾に要素の範囲を追加しようと試みる
(公開メンバ関数)
無条件に末尾に要素をその場で構築する
(公開メンバ関数)
無条件に末尾に要素を追加する
(公開メンバ関数)
末尾の要素を削除する
(公開メンバ関数)
引数から推論された型の std::back_insert_iterator を作成する
(関数テンプレート)