函式模板
<iterator>

std::inserter

template <class Container, class Iterator>  insert_iterator<Container> inserter (Container& x, Iterator it);
template <class Container>  insert_iterator<Container> inserter (Container& x, typename Container::iterator it);
構造插入迭代器
構造一個插入迭代器,該迭代器將新元素插入到容器 x 中,從 it 指向的位置開始,連續插入。

插入迭代器是一種特殊的輸出迭代器,它允許通常覆蓋元素的 演算法(如 copy)在容器中的特定位置自動插入新元素。

型別 x 需要有一個名為 insert 的成員函式(例如,大多數標準容器都有)。

使用返回的迭代器的賦值運算子(無論是解引用還是不解引用),都會導致對容器呼叫 insert,嘗試在當前插入位置插入一個帶有賦值值的元素。成功時,這會有效地將容器擴充套件一個元素。

返回的迭代器支援 輸出迭代器 的所有其他典型操作,但這些操作沒有實際效果:所有賦給它的值都會插入到當前插入位置——該位置在呼叫此函式後是 it,並且在每次透過對迭代器的賦值引起新插入後,該位置都會遞增。

引數

x
迭代器將插入新元素的容器。
Container 應為一個定義了成員 insert 的容器類。
it
指向插入點的迭代器。
這應該是一個可變迭代器(而不是const迭代器)。

返回值

一個insert_iterator,它將元素插入到 xit 指示的位置。

示例

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

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

  std::list<int>::iterator it = foo.begin();
  advance (it,3);

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

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

  return 0;
}

輸出

1 2 3 10 20 30 40 50 4 5


資料競爭

除了透過獲取其引用來訪問容器(x)外,呼叫本身不會訪問它,但返回的物件可用於訪問或修改它。

異常安全

提供的保證級別與解引用 x 和複製 it 相同。

另見