函数模板
<iterator>

std::back_inserter

template <class Container>  back_insert_iterator<Container> back_inserter (Container& x);
构造后插迭代器
构造一个后插迭代器,该迭代器将新元素插入到 x 的末尾。

后插迭代器是一种特殊的输出迭代器,它允许通常会覆盖元素的算法(如 copy)改为自动在容器末尾插入新元素。

x 的类型需要有一个 push_back 成员函数(例如标准容器 vectordequelist)。

对返回的迭代器(已解引用或未解引用)使用赋值运算符,会导致容器扩展一个元素,该元素将初始化为赋给它的值。

返回的迭代器支持所有其他典型的输出迭代器操作,但这些操作没有实际效果:所有赋给它的值都将被插入到容器的末尾。

参数

x
迭代器将插入新元素的容器。
Container 应为一个定义了 push_back 成员的容器类。

返回值

一个 back_insert_iterator,它将元素插入容器 x 的末尾。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// back_inserter example
#include <iostream>     // std::cout
#include <iterator>     // std::back_inserter
#include <vector>       // std::vector
#include <algorithm>    // std::copy

int main () {
  std::vector<int> foo,bar;
  for (int i=1; i<=5; i++)
  { foo.push_back(i); bar.push_back(i*10); }

  std::copy (bar.begin(),bar.end(),back_inserter(foo));

  std::cout << "foo contains:";
  for ( std::vector<int>::iterator it = foo.begin(); it!= foo.end(); ++it )
	  std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

输出

foo contains: 1 2 3 4 5 10 20 30 40 50


数据竞争

除了通过获取其引用来访问容器(x)外,调用本身不会访问它,但返回的对象可用于访问或修改它。

异常安全

除非 x 在应用一元 operator& 时引发异常,否则此函数永远不会抛出异常(无异常保证)。

另见