std::inplace_vector<T,N>::try_emplace_back
From cppreference.com
< cpp | container | inplace vector
| template< class... Args > constexpr pointer try_emplace_back( Args&&... args ); |
(C++26以降) | |
コンテナの末尾に要素 T を条件付きで追加します。
もし size() == capacity() が true ならば、効果はありません。そうでなければ、std::forward<Args>(args)... で直接(リスト初期化以外で)初期化された要素 T を追加します。
挿入が発生した場合を除く、end() 以外のイテレータや参照は無効になりません。
目次 |
[編集] パラメータ
| args | - | 要素のコンストラクタに転送する引数 |
| 型要件 | ||
-T は std::forward<Args>(args)... から inplace_vector への EmplaceConstructible である必要があります。 | ||
[編集] 戻り値
size() < capacity() の場合、std::addressof(back())。それ以外の場合は nullptr。
[編集] 計算量
定数。
[編集] 例外
挿入される要素の初期化によってスローされる可能性のある例外。何らかの理由で例外がスローされた場合、この関数は効果を持ちません(強力な例外安全性保証)。
[編集] 注記
| このセクションは未完成です 理由: このAPIの目的を説明します。 |
[編集] 例
このコードを実行
#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 を作成する (関数テンプレート) |