跳到主要内容

std::vector push_back() 方法

// (1) Non const version only
constexpr void push_back( T const& value );

// (2) Non const verison only
constexpr void push_back( T&& value );

将给定的元素值附加到容器的末尾。

  • (1) 新元素初始化为 value 的副本。
  • (2) value 被移动到新元素中。
失效

如果新的 size() 大于 capacity(),则所有迭代器引用(包括超出末尾迭代器)都将失效。

否则只有超出末尾迭代器会失效

参数

  • value - 要附加的元素的值

类型要求

T 在此列表中是容器的元素类型。

返回值

(无)

复杂度

分摊常数 - O(1)

异常

如果抛出异常(这可能是由于 Allocator::allocate() 或元素复制/移动构造函数/赋值导致的),此函数没有效果(强异常保证)。

如果 T 的移动构造函数不是 noexceptT 不能 CopyInsertable*this 中,则 vector 将使用抛出异常的移动构造函数。如果它抛出异常,则保证被放弃,并且效果未指定。

备注

某些实现还会抛出 std::length_error,当 push_back() 导致重新分配超出 max_size() 时(由于隐式调用等同于 reserve(size()+1))。

示例

Main.cpp
#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 ""
本文源自 此 CppReference 页面。它可能为了改进或编辑者偏好而进行了修改。单击“编辑此页面”可查看此文档的所有更改。
悬停查看原始许可证。

std::vector push_back() 方法

// (1) Non const version only
constexpr void push_back( T const& value );

// (2) Non const verison only
constexpr void push_back( T&& value );

将给定的元素值附加到容器的末尾。

  • (1) 新元素初始化为 value 的副本。
  • (2) value 被移动到新元素中。
失效

如果新的 size() 大于 capacity(),则所有迭代器引用(包括超出末尾迭代器)都将失效。

否则只有超出末尾迭代器会失效

参数

  • value - 要附加的元素的值

类型要求

T 在此列表中是容器的元素类型。

返回值

(无)

复杂度

分摊常数 - O(1)

异常

如果抛出异常(这可能是由于 Allocator::allocate() 或元素复制/移动构造函数/赋值导致的),此函数没有效果(强异常保证)。

如果 T 的移动构造函数不是 noexceptT 不能 CopyInsertable*this 中,则 vector 将使用抛出异常的移动构造函数。如果它抛出异常,则保证被放弃,并且效果未指定。

备注

某些实现还会抛出 std::length_error,当 push_back() 导致重新分配超出 max_size() 时(由于隐式调用等同于 reserve(size()+1))。

示例

Main.cpp
#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 ""
本文源自 此 CppReference 页面。它可能为了改进或编辑者偏好而进行了修改。单击“编辑此页面”可查看此文档的所有更改。
悬停查看原始许可证。