1、插入器基本概念——《C++ primer 5th》
插入器(插入迭代器)是一种迭代器适配器,它接受一个容器,生成一个迭代器,能实现向容器添加元素。当我们通过一个插入迭代器进行赋值时,该迭代器调用容器操作来向给定容器的指定位置插入一个元素。使用前需include <iterator> 。
it = t | 在 it 指定的当前位置插入值 t 。假定 c 是it绑定的容器,依赖于插入迭代器的不同种类,此赋值会分别调用 c.push_back(t) 、c.push_front(t) 或c.insert(t,p)其中 p 为传递给inserter 的迭代器位置 |
*it,++it,it++ | 这些操作虽然存在,但不会对it做任何事情。每个操作都返回 it |
2、实例演示
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
void op(list<int> li) {
for (int i : li) {
cout << i << ends;
}
cout << endl;
}
int main(void)
{
list<int> li;
auto b_it=back_inserter(li);
auto f_it = front_inserter(li);
auto it = inserter(li, li.begin());
for (int i = 0; i < 5; ++i) {
b_it = i;
}
cout << "back_inserter" << endl;
op(li);
for (int i = 5; i < 10; ++i) {
f_it = i;
}
cout << "front_inserter" << endl;
op(li);
for (int i = 10; i < 15; ++i) {
it = i;
}
cout << "inserter" << endl;
op(li);
}
输出结果为
backinserter
0 1 2 3 4
front_inserter
9 8 7 6 5 0 1 2 3 4
inserter
9 8 7 6 5 0 1 2 3 4 10 11 12 13 14
请按任意键继续. . .
注意要使用插入器,前提是该容器支持其基础实现。比如vector不支持push_front 就不可以使用front_inserter