对于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);
相关推荐
枕星而眠1 小时前
C++ 核心语法精讲:auto / 模板 / 命名空间 / 动态内存 从用法到面试
开发语言·c++·面试
沐知全栈开发1 小时前
jEasyUI 创建异步提交表单
开发语言
yoyo_zzm1 小时前
六大编程语言核心差异全解析
c语言·c++·spring boot·php
liu****1 小时前
第16届国赛蓝桥杯大赛C/C++大学C组
c语言·数据结构·c++·算法·蓝桥杯
码完就睡1 小时前
C语言——结构体的内存存储规则
c语言·开发语言
敲代码的瓦龙1 小时前
Android?广播!!!
android·java·开发语言·android-studio
磊 子1 小时前
1.2内存的存储金字塔
java·开发语言·spring·操作系统
yoyo_zzm1 小时前
四大编程语言对比:C/C++/C#/PHP
c++·c#·php
wjs20241 小时前
Bootstrap5 提示框(Tooltip)
开发语言