名前空間
変種
操作

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

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

コンテナの末尾に要素 T を条件付きで追加します。

もし size() == capacity()true ならば、効果はありません。そうでなければ、std::forward<Args>(args)... で直接(リスト初期化以外で)初期化された要素 T を追加します。

挿入が発生した場合を除く、end() 以外のイテレータや参照は無効になりません。

目次

[編集] パラメータ

args - 要素のコンストラクタに転送する引数
型要件
-
Tstd::forward<Args>(args)... から inplace_vector への EmplaceConstructible である必要があります。

[編集] 戻り値

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

[編集] 計算量

定数。

[編集] 例外

挿入される要素の初期化によってスローされる可能性のある例外。何らかの理由で例外がスローされた場合、この関数は効果を持ちません(強力な例外安全性保証)。

[編集] 注記

[編集]

#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); // no space => no insertion
    assert(c == nullptr);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));
}

[編集] 関連項目

末尾に要素を直接構築する
(公開メンバ関数) [編集]
末尾に要素を追加する
(公開メンバ関数) [編集]
末尾に要素の範囲を追加する
(公開メンバ関数) [編集]
末尾に要素の範囲を追加しようと試みる
(public member function) [編集]
末尾に要素を無条件で直接構築する
(public member function) [編集]
末尾に要素を無条件で追加する
(public member function) [編集]
最後の要素を削除する
(公開メンバ関数) [編集]
引数から推論された型の std::back_insert_iterator を作成する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)