名前空間
変種
操作

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

提供: cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
(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) を使用するためには 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]