push_back()函数的用法

push_back()函数用于在C++的vector容器末尾添加元素,可以是整数或字符。示例代码创建了一个包含10个A的vector,然后使用push_back()添加了B和C,使得vector最终包含12个元素。pop_back()函数则用来移除最后一个元素,而clear()清空所有元素,empty()检查vector是否为空,erase()用于删除特定元素。

1、push_back()函数的用法

函数将一个新的元素加入到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');

2、实例

#include <iostream>
#include <vector>

int main()
{
    std::vector<char> str(10,'A'); //初始化为包含10个'A'字符的数组
    str.push_back('B'); // 现在str有11个字符
    str.push_back('C'); // 现在str有12个字符
    
    std::cout << str[0] << std::endl;
    std::cout << str[10] << std::endl;
    std::cout << str[11] << std::endl;
}

运行结果

A
B
C

3、类似的

pop_back()移除最后一个元素

clear()清空所有元素

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

erase()删除指定元素

<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、付费专栏及课程。

余额充值