std::inplace_vector<T,N>:: push_back
From cppreference.net
<
cpp
|
container
|
inplace vector
|
constexpr
reference push_back
(
const
T
&
value
)
;
|
(1) | (C++26以降) |
|
constexpr
reference push_back
(
T
&&
value
)
;
|
(2) | (C++26以降) |
指定された要素 value をコンテナの末尾に追加します。
1)
新しい要素は
value
のコピーとして初期化されます。
2)
value
は新しい要素にムーブされます。
イテレータおよび参照は無効化されません。ただし、
end()
は、挿入が発生した場合に無効化されます。
目次 |
パラメータ
| value | - | 追加する要素の値 |
| 型要件 | ||
-
T
はオーバーロード(1)を使用するために
CopyInsertable
の要件を満たさなければならない。
|
||
-
T
はオーバーロード(2)を使用するために
MoveInsertable
の要件を満たさなければならない。
|
||
戻り値
back()
、すなわち挿入された要素への参照。
計算量
定数。
例外
- std::bad_alloc がスローされる条件: size ( ) == capacity ( ) が呼び出し前に成立する場合。
- 挿入される要素の初期化によってスローされるあらゆる例外。
何らかの理由で例外がスローされた場合、これらの関数は何も効果を持ちません( strong exception safety guarantee )。
例
このコードを実行
#include <inplace_vector> #include <new> #include <print> #include <string> int main() { std::inplace_vector<std::string, 2> fauna; std::string dog{"\N{DOG}"}; fauna.push_back("\N{CAT}"); // オーバーロード (1) fauna.push_back(std::move(dog)); // オーバーロード (2) std::println("fauna = {}", fauna); try { fauna.push_back("\N{BUG}"); // スロー: 空き領域なし } catch(const std::bad_alloc& ex) { std::println("{}", ex.what()); } std::println("fauna = {}", fauna); }
出力例:
fauna = ["🐈", "🐕"] std::bad_alloc fauna = ["🐈", "🐕"]
関連項目
|
末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
末尾に要素の範囲を追加する
(公開メンバ関数) |
|
|
末尾に要素を追加しようと試みる
(公開メンバ関数) |
|
|
末尾に要素をその場で構築しようと試みる
(公開メンバ関数) |
|
|
末尾に要素の範囲を追加しようと試みる
(公開メンバ関数) |
|
|
無条件に末尾に要素を追加する
(公開メンバ関数) |
|
|
無条件に末尾に要素をその場で構築する
(公開メンバ関数) |
|
|
最後の要素を削除する
(公開メンバ関数) |
|
|
引数から推論された型の
std::back_insert_iterator
を作成する
(関数テンプレート) |