1. 定义

插入型迭代器(Insert Iterator),又叫插入器(Inserter)。

2. 作用

插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。
算法库对所有在容器上的操作有约束:决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一统带,即保持了设计上的一致性。

3. 类型

3.1 尾部插入器(back_insert_iterator)
使用:通过调用容器的push_back()成员函数来插入元素
功能:在容器的尾端插入元素
限制:只有提供了push_back()成员函数的容器中
适用:vector deque list

3.2 头部插入器(front_insert_iterator)
使用:通过调用容器的push_front()成员函数来插入元素
功能:在容器的前端插入元素
限制:只有提供了push_front()成员函数的容器中
适用:deque list

3.3 普通插入器(insert_iterator)
使用:通过调用insert()成员函数来插入元素,并由用户指定插入位置
功能:在容器的指定位置插入元素
限制:STL容器都提供了insert()函数.
适用:提供了insert()函数的STL容器

例子:

 #include <iostream>
#include <vector>
#include <list>
#include <iterator>
#include <queue>
#include <set>
using namespace std; int main()
{
vector<int> V;
list<int> L; for(int i = ; i < ; ++i)
V.push_back(i %); //back_inserter
copy(V.begin(), V.end(), back_inserter(L)); list<int>:: iterator it;
for(it = L.begin(); it != L.end(); it++)
{
cout <<*it<<" ";
}
cout << endl; // front_inserter
deque<int> dq;
copy(V.begin(), V.end(), front_inserter(dq)); deque<int>:: iterator it1;
for(it1 = dq.begin(); it1 != dq.end(); it1++)
{
cout <<*it1<<" ";
}
cout << endl;
// insert_iterator
set<int> s;
copy(L.begin(), L.end(), inserter(s, s.begin()));
set<int>::iterator it2;
for(it2 = s.begin(); it2 != s.end(); it2 ++)
{
cout<<*it2<<" ";
} return ;
}

C++迭代器之'插入迭代器的更多相关文章

  1. C++迭代器之'反向迭代器'

    反向迭代器(Reverse Iterator)是普通迭代器的适配器,通过重新定义自增和自减操作,以达到按反序遍历元素的目的.如果在标准算法库中用反向迭代器来代替普通的迭代器,那么运行结果与正常情况下相 ...

  2. Python中的可迭代对象与迭代器对象

    刚刚学习Python,对“可迭代对象”和"迭代器对象"的个人理解,不知道对不对. 1.几个概念 (1)迭代工具:包括for循环.列表解析.in成员关系测试.....等等在内的,用于 ...

  3. Python可迭代对象、迭代器和生成器

    Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...

  4. Python之列表生成式、生成器、可迭代对象与迭代器

    本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法 ...

  5. 完全理解Python迭代对象、迭代器、生成器

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...

  6. Python 迭代器之列表解析

     [TOC] 尽管while和for循环能够执行大多数重复性任务, 但是由于序列的迭代需求如此常见和广泛, 以至于Python提供了额外的工具以使其更简单和高效. 迭代器在Python中是以C语言的 ...

  7. python可迭代对象和迭代器和生成器

    可迭代对象 刚开始我认为这两者是等同的,但后来发现并不是这样:下面直接抛出结论: )可迭代对象包含迭代器. )如果一个对象拥有__iter__方法,其是可迭代对象:如果一个对象拥有next方法,其是迭 ...

  8. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

  9. day 13 迭代器、可迭代对象、迭代器对象、生成器、生成器对象、枚举对象

    迭代器大概念 # 迭代器:循环反馈的容器(集合类型)# -- 不同于索引取值,但也可以循环的从容器对象中从前往后逐个返回内部的值​# 优点:不依赖索引,完成取值# 缺点:不能计算长度,不能指定位取值( ...

随机推荐

  1. Create the first sql server 2016 mobile report;创建 第一个 sqlserver 2016 Mobile report

    在微软收购了datazen之后,sqlserver2016 集成了mobilereport,mobile report 基于html5,兼容各类主流浏览器,之前ssrs2008 R2中很多chart类 ...

  2. JetSpeed2部署至Apusic操作步骤记录

    JetSpeed2部署至Apusic操作步骤记录. 1.创建Apusic新域,配置端口.管理端口和管理密码. 2.将Tomcat/lib目录中的所有jar包复制至Apusic域中的lib目录中(包括数 ...

  3. C#扩展方法学习

    扩展方法的本质是什么,详细见此文 C#扩展方法,爱你在心口难开 重点如下:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法 ...

  4. 转 Dock 外 命令解析

    RUN vs CMD vs ENTRYPOINT - 每天5分钟玩转 Docker 容器技术(17) 小结: run 主要是安装镜像,安装软件. CMD 设置容器启动后默认执行的命令及其参数,但 CM ...

  5. java 对象流的简单使用

    对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息. 使得对象持久化.   ObjectInputStream   : 对象输入流   ObjectOutPutStream  :对象输出流 ...

  6. js中,浏览器中不同元素位置属性解析

    offset()   只对可见元素有效,获取匹配元素在当前视口的相对偏移,返回的对象有两个整型属性,top和left,像素计算: position() 相对父元素的偏移,position.left   ...

  7. 2017广东工业大学程序设计竞赛决赛 H tmk买礼物

    题意: Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间,店主就对TMK说:“恭喜你成为了本店第21 ...

  8. iOS programming UITabBarController

    iOS programming UITabBarController 1.1 View controllers become more interesting when the user's acti ...

  9. CDN概述

  10. Node.js——req、res对象

    requset对象类型<http.IncomingMessage>,继承stream.Readable类 requset对象: req.headers req.rawHeaders req ...