push_back()函数的用法

本文详细介绍了C++标准库中的vector容器,重点讲解了如何使用push_back()函数在vector末尾添加元素,以及pop_back()移除最后一个元素,clear()清空所有元素,empty()检查容器是否为空,和erase()删除指定元素。通过实例展示了这些基本操作的用法,适合C++初学者参考。

函数将一个新的元素加到vector的最后面,位置为当前最后一个元素的下一个元素

push_back() 在Vector最后添加一个元素(参数为要插入的值)

//在vec尾部添加10
 
vector<int> vec;
vec.push_back(10);
//在容器中添加10
 
int num = 10;
vector<int> vec;
vec.push_back(num);

或者再string中最后插入一个字符;

string str;
str.push_back('d');

类似的:

pop_back() //移除最后一个元素

clear() //清空所有元素

empty() //判断vector是否为空,如果返回true为空

erase() // 删除指定元素

版权声明:本文为优快云博主「snowcatvia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/snowcatvia/article/details/96716344

<think>我们正在讨论C++中std::vector的push_back函数。根据引用内容,push_back函数用于在vector的末尾添加一个元素。用户希望了解其作用和使用方法。根据引用[1]和引用[3]:- push_back函数将元素添加到动态数组(vector)的尾部。 -它接受一个参数,即要插入的值。这个参数可以是直接值(如10)或者变量(如num)。-使用示例:`vec.push_back(10);`或`vec.push_back(num);` 此外,引用[2]提到了emplace_back,但用户目前只关注push_back。 因此,回答应围绕push_back的作用、使用方法以及注意事项展开。 由于用户要求使用中文回答,并且需要生成相关问题,我们将按照以下结构:1.解释push_back的作用。2.展示使用方法(代码示例)。3.可能的使用注意事项(如性能、类型要求等)。4.生成相关问题。注意:引用[1]和[3]都明确说明了push_back的基本用法,我们据此回答。</think>### C++ vector 的 push_back 函数详解 #### 作用说明 `push_back` 是 C++ 标准库中 `std::vector` 容器的成员函数,**核心作用是在动态数组的末尾添加一个新元素**。当调用该函数时: 1. 将参数值**拷贝或移动**到 vector 的尾部 2. 自动处理内存分配:若当前容量不足,会重新分配更大内存(通常扩容为原大小 1.5-2 倍) 3. 更新 vector 的 `size()` 计数 #### 使用方法 ```cpp #include <vector> #include <string> int main() { // 示例1:添加基本类型 std::vector<int> nums; nums.push_back(10); // 直接插入值 int x = 20; nums.push_back(x); // 插入变量 // 示例2:添加对象 std::vector<std::string> words; words.push_back("Hello"); // 构造临时string对象后拷贝 // 示例3:链式调用 std::vector<char> chars; chars.push_back('A').push_back('B'); // 连续添加 } ``` #### 关键特性 | 特性 | 说明 | |------|------| | 时间复杂度 | 平摊 $O(1)$ (扩容时 $O(n)$) | | 参数类型 | 接受元素类型的 `const` 引用或右值引用 | | 内存管理 | 自动处理扩容,无需手动分配内存 | | 元素构造 | 调用元素的**拷贝构造函数**或**移动构造函数** | #### 与 emplace_back 的区别 虽然两者都添加元素,但 `push_back` 需要**先构造临时对象再拷贝**,而 `emplace_back` 直接在容器内构造元素(避免拷贝开销)[^2]。例如: ```cpp // push_back 等效操作: std::string temp("Hello"); // 先构造临时对象 words.push_back(temp); // 再拷贝到容器 // emplace_back 直接构造: words.emplace_back("Hello"); // 无临时对象 ``` #### 使用场景 - 适合添加**少量元素**或**元素拷贝成本低**的情况 - 需要兼容旧版 C++ 标准时(C++11 前无 `emplace_back`) - 当元素类型支持高效移动语义时(如 `std::unique_ptr`) > ⚠️ 注意事项:频繁调用可能导致多次扩容,影响性能。预分配内存可优化: > ```cpp > std::vector<int> vec; > vec.reserve(100); // 预分配100个元素空间 > for(int i=0; i<100; ++i) vec.push_back(i); > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值