std::inplace_vector<T,N>:: try_emplace_back
|
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 )。
注記
|
このセクションは不完全です
理由: この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); // 空き容量なし => 挿入なし assert(c == nullptr); assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i})); }
関連項目
|
末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
末尾に要素を追加する
(公開メンバ関数) |
|
|
末尾に要素の範囲を追加する
(公開メンバ関数) |
|
|
末尾に要素の範囲を追加しようと試みる
(公開メンバ関数) |
|
|
無条件に末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
無条件に末尾に要素を追加する
(公開メンバ関数) |
|
|
末尾の要素を削除する
(公開メンバ関数) |
|
|
引数から推論された型の
std::back_insert_iterator
を作成する
(関数テンプレート) |