函数模板
<iterator>

std::front_inserter

template <class Container>  front_insert_iterator<Container> front_inserter (Container& x);
构造前向插入迭代器
构造一个将新元素插入到 x 开头的前向插入迭代器

前向插入迭代器 是一种特殊的输出迭代器,它允许通常覆盖元素的算法(例如 copy)自动在容器开头插入新元素。

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

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

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

参数

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

返回值

一个 front_insert_iterator,它将元素插入容器 x 的开头。

示例

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

int main () {
  std::deque<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(),std::front_inserter(foo));

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

  return 0;
}

输出

50 40 30 20 10 1 2 3 4 5


数据竞争

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

异常安全

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

另见