名前空間
変種
操作

std::vector<T,Allocator>::push_back

提供: cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
(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) を使用するためには TCopyInsertable の要件を満たさなければなりません。
-
オーバーロード (2) を使用するためには TMoveInsertable の要件を満たさなければなりません。

[編集]戻り値

(なし)

[編集]計算量

償却定数時間。

[編集]例外

例外が投げられた場合 (Allocator::allocate() または要素のコピー/ムーブのコンストラクタ/代入によって発生する可能性があります)、この関数は効果を持ちません (強い例外保証)。

T のムーブコンストラクタが noexcept でなく、 T が *thisCopyInsertable でない場合、 vector は例外を投げるムーブコンストラクタを使用します。 それが例外を投げた場合、保証は断念され、その効果は未規定です。(C++11以上)

ノート

処理系によっては、 push_back によって再確保が発生し、暗黙に reserve(size()+1) と同等の処理を呼んだことによって max_size を超過した場合、 std::length_error を投げる場合もあります。

[編集]

#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 ""

[編集]関連項目

要素を末尾にその場で構築します
(パブリックメンバ関数)[edit]
最後の要素を削除します
(パブリックメンバ関数)[edit]
close