对于C++中push_back的原理介绍与分析

push_back 的原理

首先我们都清楚 push_back() 的作用是复制或移动的方式向容器尾部添加给定的元素。函数接口如下面两个形式。

复制代码
// T为类模板参数
void push_back(const T& value);
void push_back(T&& value);

这里有一段简单的代码,向一个 std::vector<std::string> 添加一个字符串。

复制代码
#include <string>
#include <vector>

int main() {
    std::vector<std::string> arr;
    arr.push_back("Hello World");
}

其中 arr.push_back("Hello World"); 的参数是一个字符串字面量。

而向一个 std::vector<std::string> 添加一个字符串字面量,会经过两个步骤:

  1. 通过字符串字面量构造出一个临时的字符串对象;
  2. 将临时对象匹配到 void push_back(T&& value); 并移动到数据尾部。

类似于这么一个形式:

复制代码
arr.push_back(std::string("Hello World"));    --->   void push_back(T&& value);
相关推荐
Wang's Blog10 小时前
Go-Zero项目开发4: 用户服务搜索、详情与统一错误处理
开发语言·golang
我星期八休息10 小时前
网络编程—应用层HTTP协议
linux·运维·开发语言·前端·网络·网络协议·http
梅雅达编程笔记10 小时前
零基础学 Python 第14章 | 模块、包与第三方库
开发语言·python·django·numpy·pandas
Mr__Miss10 小时前
Java泛型完全指南:从入门到精通
java·开发语言·python
赵庆明老师10 小时前
Vben精讲:14-Vben远程加载语言包
开发语言·vben
jinyishu_11 小时前
模拟实现 C++ 栈和队列——从适配器模式看懂 STL 容器之美
java·c++·适配器模式
hehelm11 小时前
AI大模型接入SDK—通用模块设计
linux·开发语言·c++
梅雅达编程笔记13 小时前
零基础学 Python 第15章 | 类与对象:面向对象编程入门
开发语言·python·django·numpy·pandas
行思理13 小时前
微信支付“商家转账用户确认模式”,新手教程
java·开发语言·微信
麻瓜老宋13 小时前
AI开发C语言应用按步走,表达式计算器calc的第一步,中缀表达式词法分析
c语言·开发语言·atomcode