C++之插入迭代器
#include<iostream>#include<vector>#include<list>#include<iterator>usingnamespace std;template<typename T>voidPrintElements(T c){typename T::const_iterator itr = c.begin();//在GCC下typename不能省略while(itr != c.end()){cout <<*itr++<<" ";}cout << endl;}int main(){vector<int> vecSrc;list<int> vecDest;for(vector<int>::size_type i =0; i <3;++i){vecSrc.push_back(i);}//--0,1,2---/*** 第一种方法是调用<iterator>头文件中的函数来返回一个back_insert_iterator对象* template< class Container >* std::back_insert_iterator<Container> back_inserter( Container& c );*//*** 第二种方法是调用back_insert_iterator类的构造函数来创建类对象* explicit* back_insert_iterator(_Container& __x) : container(&__x) { }*/copy(vecSrc.begin(), vecSrc.end(), back_inserter(vecDest));//copy(vecSrc.begin(), vecSrc.end(), back_insert_iterator<list<int> >(vecDest));PrintElements(vecDest);//--0,1,2---copy(vecSrc.begin(), vecSrc.end(), front_inserter(vecDest));//copy(vecSrc.begin(), vecSrc.end(), front_insert_iterator<list<int> >(vecDest));PrintElements(vecDest);//--2,1,0,0,1,2---copy(vecSrc.begin(),vecSrc.end(), inserter(vecDest,++vecDest.begin()));//copy(vecSrc.begin(), vecSrc.end(), insert_iterator<list<int> >(vecDest, ++vecDest.begin()));PrintElements(vecDest);//--2,0,1,2,1,0,0,1,2---back_insert_iterator<list<int>> itBack = back_inserter(vecDest);//这里也可以直接调用构造函数*itBack =101;*itBack =102;//itBack每次都指向容器最后的元素PrintElements(vecDest);//.....101,102front_insert_iterator<list<int>> itFront = front_insert_iterator<list<int>>(vecDest);*itFront =1001;*itFront =1002;PrintElements(vecDest);//1002,1001......insert_iterator<list<int>> itIst = inserter(vecDest, vecDest.begin());*itIst =11;*itIst =12;PrintElements(vecDest);//--11,12,1002,1001.....// *itIst = value;相当于// itIst = c.insert(it,value);// ++itIst;// insert函数返回的是指向插入元素的迭代器,由于该函数是在给定迭代器之前插入元素,所以++itIst之后// itIst依然指向的是原来的元素。操作结束后itIst指向的位置未发生改变return0;}
C++之插入迭代器的更多相关文章
- c/c++ 标准库 插入迭代器 详解
标准库 插入迭代器 详解 插入迭代器作用:copy等函数不能改变容器的大小,所以有时copy先容器是个空的容器,如果不使用插入迭代器,是无法使用copy等函数的. 例如下面的代码就是错误的: list ...
- 【C++ Primer 第10章】 10.4.1 插入迭代器
目录 • iostream迭代器 • 反向迭代器 插入迭代器 插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素. 头文件为:#include<iterator it=t 在it指 ...
- 迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_iterator)}
一.迭代器适配器 反向迭代器 插入迭代器 IO流迭代器 其中反向迭代器可以参考以前的文章. 二.插入迭代器 插入迭代器实际上是一个输出迭代器(*it=; ++) back_insert_iterato ...
- STL之--插入迭代器(back_inserter,inserter,front_inserter的区别)
除了普通迭代器,C++标准模板库还定义了几种特殊的迭代器,分别是插入迭代器.流迭代器.反向迭代器和移动迭代器,定义在<iterator>头文件中,下面主要介绍三种插入迭代器(back_in ...
- C++迭代器之'插入迭代器
1. 定义 插入型迭代器(Insert Iterator),又叫插入器(Inserter). 2. 作用 插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作.算法库对所有在容器上的操作 ...
- uva 12096 The SetStack Computer(STL set的各种库函数 交集 并集 插入迭代器)
题意: 有5种操作: PUSH:加入“{}”空集合入栈. DUP:栈顶元素再入栈. UNION:出栈两个集合,取并集入栈. INTERSECT:出栈两个集合,取交集入栈. ADD:出栈两个集合,将先出 ...
- 【C++ Primer 第10章】 10.4.2 插入迭代器
iostream迭代器 标准库为iostream定义了可用于这些IO类型对象的迭代器. istream_iterator读取输入流, ostream_iterator向一个输出流写数据. 1. i ...
- c++ insert iterators 插入型迭代器
insert iterators 插入型迭代器 (1)front inserters 前向插入迭代器 只适用于提供有push_front()成员函数的容器,在标准程序库中这样的容器是deque和lis ...
- 10.4 再探迭代器-插入/IO/反向
10.4.1 插入迭代器 插入迭代器接受一个容器,生成一个迭代器,通过向该迭代器赋值可以实现向容器添加元素 (1)back_inserter: 接受一个参数, 示例: auto iter = back ...
随机推荐
- 【纪中集训2019.3.23】Deadline
题意 描述 一个二分图\((A,B)\),每个点额外有一个颜色0或者1: 匹配时,只能相同颜色的点匹配: 给出\(A\)中的颜色,问如何分配\(B\)种的颜色使得\((A,B)\)的最大匹配最小: 范 ...
- pickle 在python2 to python3 编码出现错误
pickle.load(file) UnicodeDecodeError: 'ascii' codec can't decode byte 0xf5 in position 2: ordinal no ...
- Linux运维七:网络基础
1:网线 2:交换机,路由器 交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备.它可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机.其他常见的 ...
- NO.2day 操作系统基础
操作系统基础 1.为什么要有操作系统 操作系统为用户程序提供一个更好.更简单.更清晰的计算机模型,并管理刚才提到的所有设备(磁盘.内存.显示器.打印机等).程序员无法把所有的硬件操作细节都了解到,管理 ...
- 搞ACM的你伤不起[转载] 原作者:RoBa
劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟 ...
- Java并发编程原理与实战十四:Lock接口的认识和使用
保证线程安全演进: synchronized volatile AtomicInteger Lock接口提供的方法: void lock():加锁 void unlock():解锁 void lock ...
- Kafka安装验证及其注意
一.Zookeeper 配置文件说明: # the directory where the snapshot is stored. dataDir=/tmp/zookeeper # the port ...
- spring框架学习(八)spring管理事务方式之注解配置
1.DAO AccountDao.java package cn.mf.dao; public interface AccountDao { //加钱 void increaseMoney(Integ ...
- CodeVS4416 FFF 团卧底的后宫
题目描述 Description 你在某日收到了 FFF 团卧底的求助,在他某日旅游回来,他的后宫们出现了一些不可调和的矛盾,如果 FFF 团卧底把自己的宝贝分给 a 号妹子,那么 b 号妹子至少要在 ...
- 【译】第三篇 Integration Services:增量加载-Adding Rows
本篇文章是Integration Services系列的第三篇,详细内容请参考原文. 增量加载是什么增量加载仅加载与先前加载差异的.差异包括:->新增的行->更新的行->删除的行通过 ...