对于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);
相关推荐
BadBadBad__AK14 小时前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境1 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境1 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴2 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境4 天前
C++ 的Eigen 库全解析
c++
卷无止境4 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴4 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18006 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴6 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨7 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++