名稱空間
變體
操作

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

來自 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),T必須滿足CopyInsertable的要求。
-
為了使用過載 (2),T必須滿足MoveInsertable的要求。

[編輯] 返回值

(無)

[編輯] 複雜度

攤還常數時間。

[編輯] 異常

如果丟擲異常(可能是由於Allocator::allocate()或元素複製/移動建構函式/賦值),此函式沒有效果(強異常保證)。

如果T的移動建構函式不是noexceptT不是CopyInsertable*this,則vector將使用可能丟擲異常的移動建構函式。如果它丟擲,則保證被放棄,效果未指定。

(C++11 起)

注意

push_back導致重新分配超出max_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
(函式模板) [編輯]