std::vector<T,Allocator>::push_back
提供: cppreference.com
(1) | ||
void push_back(const T& value ); | (C++20未満) | |
constexprvoid push_back(const T& value ); | (C++20以上) | |
(2) | ||
void push_back( T&& value ); | (C++11以上) (C++20未満) | |
constexprvoid 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) | 要素を末尾にその場で構築します (パブリックメンバ関数) |
最後の要素を削除します (パブリックメンバ関数) |