对于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);
相关推荐
Lazionr几秒前
二叉搜索树:从树形结构到高效查找
开发语言·c++
此生决int2 分钟前
深入理解C++系列(21)——异常
开发语言·c++
曼巴UE54 分钟前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
乌暮15 分钟前
Java 抽象类与接口详解:半成品图纸 vs 能力合同
java·开发语言·后端·学习
All for pursuit.16 分钟前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
01二进制代码漫游日记21 分钟前
C++之类和对象(上)02
c++
乐观的Terry22 分钟前
ShipDesk 完整使用教程:从新建项目到 SSH 自动发布
开发语言
渡我白衣42 分钟前
HttpRequest与HttpResponse的实现
服务器·数据结构·c++·人工智能·tcp/ip·机器学习·caffe
刃神太酷啦43 分钟前
前端入门第一课:HTML 基础语法 + 常用标签 + 实战全解
服务器·c语言·前端·javascript·css·c++·html
蒸蒸yyyyzwd1 小时前
八股学习笔记 day42
c++·八股