名前空間
変種
操作

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

From cppreference.com
< cpp‎ | コンテナ‎ | vector
 
 
 
 
void push_back( const T& value );
(1) (C++20 以降 constexpr)
void push_back( T&& value );
(2) (C++11以降)
(C++20 以降 constexpr)

与えられた要素 value をコンテナの末尾に追加します。

1) 新しい要素は value のコピーとして初期化されます。
2) value は新しい要素にムーブされます。

操作後、新しい size() が古い capacity() より大きい場合、再割り当てが行われ、その場合、すべてのイテレータ ( end() イテレータを含む) と要素へのすべての参照は無効になります。それ以外の場合、 end() イテレータのみが無効になります。

目次

[編集] パラメータ

value - 追加する要素の値
型要件
-
オーバーロード (1) を使用するには、TCopyInsertable の要件を満たす必要があります。
-
オーバーロード (2) を使用するには、TMoveInsertable の要件を満たす必要があります。

[編集] 戻り値

(なし)

[編集] 計算量

償却定数。

[編集] 例外

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

T のムーブコンストラクタが noexcept でなく、かつ T*thisCopyInsertable でない場合、vector はスローするムーブコンストラクタを使用します。それがスローされた場合、保証は放棄され、効果は未規定です。

(C++11以降)

注釈

一部の実装では、push_backmax_size を超える再割り当てを引き起こす場合 (reserve(size() + 1)) と同等の暗黙的な呼び出しによる)、std::length_error をスローします。

[編集]

#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
 
int main()
{
    std::vector<std::string> letters;
 
    letters.push_back("abc");
    std::string s{"def"};
    letters.push_back(std::move(s));
 
    std::cout << "std::vector letters holds: ";
    for (auto&& e : letters)
        std::cout << std::quoted(e) << ' ';
 
    std::cout << "\nMoved-from string s holds: " << std::quoted(s) << '\n';
}

実行結果の例

std::vector letters holds: "abc" "def"
Moved-from string s holds: ""

[編集] 関連項目

末尾に要素を直接構築する
(公開メンバ関数) [編集]
最後の要素を削除する
(公開メンバ関数) [編集]
引数から推論された型の std::back_insert_iterator を作成する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)