std::back_inserter
是 C++ 标准库中的一个函数模板,它用于创建一个插入迭代器(insert iterator),这个迭代器可以在容器末尾插入新元素。它定义在 <iterator>
头文件中。
函数原型
template <typename Container>
back_insert_iterator<Container> back_inserter(Container& c);
参数
c
:要插入元素的容器。
返回值
返回一个 back_insert_iterator
,它绑定到容器 c
上,并能够在每次赋值操作时在容器的末尾插入新元素。
使用场景
std::back_inserter
常用于以下场景:
- 当你需要将一系列元素插入到容器的末尾,而不想关心容器的当前大小或容量时。
- 与算法结合使用,例如
std::copy
,来将一个容器的内容复制到另一个容器的末尾。
示例
#include <iostream>
#include <vector>
#include <iterator> // 包含 std::back_inserter
#include <algorithm> // 包含 std::copyint main() {std::vector<int> vec1 = {1, 2, 3};std::vector<int> vec2;// 使用 std::back_inserter 将 vec1 的内容复制到 vec2 的末尾std::copy(vec1.begin(), vec1.end(), std::back_inserter(vec2));// vec2 现在包含 vec1 的所有元素for (int num : vec2) {std::cout << num << ' ';}std::cout << '\n';// 直接使用 std::back_inserter 插入元素std::vector<int> vec3;*std::back_inserter(vec3) = 10;*std::back_inserter(vec3) = 20;*std::back_inserter(vec3) = 30;// vec3 现在包含 10, 20, 30for (int num : vec3) {std::cout << num << ' ';}std::cout << '\n';return 0;
}