std::vector<T,Allocator>::push_back
提供: cppreference.com
(1) | ||
void push_back( const T& value ); |
(C++20未満) | |
constexpr void push_back( const T& value ); |
(C++20以上) | |
(2) | ||
void push_back( T&& value ); |
(C++11以上) (C++20未満) |
|
constexpr void push_back( T&& value ); |
(C++20以上) | |
指定された要素 value
をコンテナの終端に追加します。
1) 新しい要素は
value
のコピーとして初期化されます。2)
value
が新しい要素にムーブされます。新しい size() が capacity() より大きい場合は、すべてのイテレータおよび参照 (終端イテレータも含む) が無効化されます。 そうでなければ、終端イテレータのみが無効化されます。
目次 |
[編集] 引数
value | - | 追加する要素の値 |
型の要件 | ||
-オーバーロード (1) を使用するためには T は CopyInsertable の要件を満たさなければなりません。
| ||
-オーバーロード (2) を使用するためには T は MoveInsertable の要件を満たさなければなりません。
|
[編集] 戻り値
(なし)
[編集] 計算量
償却定数時間。
[編集] 例外
例外が投げられた場合 (Allocator::allocate()
または要素のコピー/ムーブのコンストラクタ/代入によって発生する可能性があります)、この関数は効果を持ちません (強い例外保証)。
T のムーブコンストラクタが noexcept でなく、 T が *this に CopyInsertable でない場合、 vector は例外を投げるムーブコンストラクタを使用します。 それが例外を投げた場合、保証は断念され、その効果は未規定です。 |
(C++11以上) |
ノート
処理系によっては、 push_back
によって再確保が発生し、暗黙に reserve(size()+1) と同等の処理を呼んだことによって max_size を超過した場合、 std::length_error を投げる場合もあります。
[編集] 例
Run this code
#include <vector> #include <iostream> #include <iomanip> int main() { std::vector<std::string> letters; letters.push_back("abc"); std::string s = "def"; letters.push_back(std::move(s)); std::cout << "vector holds: "; for (auto&& i : letters) std::cout << std::quoted(i) << ' '; std::cout << "\nMoved-from string holds " << std::quoted(s) << '\n'; }
出力:
vector holds: "abc" "def" Moved-from string holds ""
[編集] 関連項目
(C++11) |
要素を末尾にその場で構築します (パブリックメンバ関数) |
最後の要素を削除します (パブリックメンバ関数) |