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) |
要素を末尾にその場で構築します (パブリックメンバ関数) |
| 最後の要素を削除します (パブリックメンバ関数) |