10.4.1 插入迭代器

插入迭代器接受一个容器,生成一个迭代器,通过向该迭代器赋值可以实现向容器添加元素 
(1)back_inserter: 
接受一个参数, 
示例: 
auto iter = back_inserter(iVec); 
iter = value; 
(2)front_inserter: 
接受一个参数, 
示例: 
auto iter = front_inserter(iVec); 
iter = value; 
(3)inserter: 
接受两个参数,示例:auto iter = inserter(iVec, it); //it必须是一个指向iVec的迭代器, 
iter = value; //将value插入到it之前

习题 10.28 三种插入迭代器的应用

int main()
{int array[] = { 1,2,3,4,5,6 };vector<int> iVec(begin(array), end(array));vector<int> iVec_back;deque<int> iDeque_front;list<int> iList_inserter;copy(iVec.begin(), iVec.end(), back_inserter(iVec_back));copy(iVec.begin(), iVec.end(), front_inserter(iDeque_front));copy(iVec.begin(), iVec.end(), inserter(iList_inserter, iList_inserter.begin()));system("pause");
}

View Code

习题10.27

int main()
{int array[] = { -2, 6, 1, 6, 5, -9, 4, -2, 8 };vector<int> iVec(begin(array), end(array));vector<int> iVecUnique;//元素排序,为拷贝不重复的元素做准备
    stable_sort(iVec.begin(), iVec.end());//拷贝不重复的元素到iVecUnique
    unique_copy(iVec.begin(), iVec.end(), back_inserter(iVecUnique));system("pause");
}

View Code

10.4.2 iostream迭代器

主要目的是使用算法操作流迭代器。

习题10.30 标准流迭代器的应用

int main()
{istream_iterator<int> in_ite(cin);  //定义输入流迭代器,并绑定标准输入流istream_iterator<int> in_end;   //定义尾后迭代器,没有数据读入时迭代器就为尾后迭代器ostream_iterator<int> out_iter(cout);   //定义输出流迭代器,并绑定标准输出流vector<int> iVec;copy(in_ite, in_end, back_inserter(iVec));sort(iVec.begin(), iVec.end());//排序copy(iVec.begin(), iVec.end(), out_iter);//输出到与 out_iter 绑定的标准输出设备system("pause");
}

View Code

习题 10.29 使用流迭代器读取文件

int main()
{       ifstream ifstrm("h:\\1.txt");   //定义文件输入流istream_iterator<string> in_iter(ifstrm);   //定义IO类的输入迭代器,并绑定ifstrmistream_iterator<string> in_end;    //定义尾后迭代器,没有数据读入时迭代器就为尾后迭代器vector<string> strVec;copy(in_iter, in_end, back_inserter(strVec));   //利用copy算法将文件中的内容放到容器,以单词为组
system("pause");
}

View Code

10.4.3反向迭代器

//假定有一个名为 line 的string,保存着一个逗号分隔的单词列表,我们希望打印line中的第一个单词和最后一个单词,则分别用正向迭代器和逆向迭代器
int main()
{       string line = "first,middle,last";auto comma = find(line.cbegin(), line.cend(), ','); //查找第一个逗号cout << string(line.cbegin(), comma) << endl;//打印最后一个单词auto rcomma = find(line.crbegin(), line.crend(), ',');  //查找最后一个逗号cout << string(line.crbegin(), rcomma) << endl; //错误,输出 tsal 是逆序的//cout << string(rcomma, line.crbegin()) << endl;   //错误,rcomma是一个逆向迭代器,而line.crbegin()返回尾后字符,所以会溢出cout << string(rcomma.base(), line.end()) << endl;  //正确,反向迭代器调用base()函数会返回普通迭代器,注意调用后指向不同的元素,会移动一位system("pause");
}

View Code

转载于:https://www.cnblogs.com/liyubo/p/7868754.html

10.4 再探迭代器-插入/IO/反向相关推荐

  1. C++primer第十章 泛型算法 10.4 再探迭代器 10.5 泛型算法结构

    除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器.这些迭代器包括以下几种. 插入迭代器(insert iterator):这些迭代器被绑定到一个容器上,可用来向容 ...

  2. 再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类

    上次我对C#类与结构体做了一次速度评测(http://blog.csdn.net/zyl910/article/details/6788417).经过一段时间思索,发现还可以进一步探讨-- 第一.栈变 ...

  3. RxSwift学习--核心逻辑再探

    前言 通过上一篇内容RxSwift学习--核心逻辑初探,对RxSwift有了些初步的认知,下面通过源码来看一下RxSwift到底有多骚 RxSwift核心逻辑再探 先把上篇中的例子代码搬过来: //第 ...

  4. 【CTF大赛】2021 DASCTF July cybercms 一探再探

    引言 在前不久结束的 2021 DASCTF July X CBCTF 4th 比赛中,有一道名为 cybercms 的 web 题目. 预期解是从后台登录处进行 SQL 注入写入一句话木马,然而咱在 ...

  5. 函数重载、引用再探、内联函数

    文章目录 函数重载 为什么C++支持重载,C语言不支持呢? extern "C" 引用再探 引用的特性 引用的使用场景 引用和指针 引用和指针的不同点: 内联函数 什么是内联函数? ...

  6. 【再探backbone 02】集合-Collection

    前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...

  7. C++Primer 第10章 bind与迭代器

    C++Primer 第10章 bind与迭代器 //10.20,10.22 #include<iostream> #include<vector> #include<st ...

  8. 自制深度学习推理框架-第十一节-再探Tensor类并构建计算图的图关系

    自制深度学习推理框架-第十一节-再探Tensor类并准备算子的输入输出 本课程介绍 我写了一个<从零自制深度学习推理框架>的课程,课程语言是 C++,课程主要讲解包括算子实现和框架设计的思 ...

  9. 再探MS-SAMR协议

    再探MS-SAMR协议 作者:Loong716@Amulab 0x00 前言 在前一篇<利用MS-SAMR协议修改用户密码>中介绍了利用MS-SAMR修改用户密码并还原的技巧.在本篇文章中 ...

最新文章

  1. 【公开课预告】:六款开源LL-HLS/LL-DASH播放器评测
  2. X-Mas Musings –在Grails集成测试中不要使用随机服务器端口
  3. android build获取ext,顶级build.gradle文件中的ext属性
  4. nivdia错误0x0003_超全解决Geforce 错误代码 ERROR CODE:0x0003问题方法
  5. Win10安装配置CLion+MinGW
  6. 谈demo、原型、产品的区别
  7. 【TPshop踩雷篇 — 数据库连接配置失败】
  8. Python爬虫有用的库:chardet,自动检测字符编码
  9. vue富文本编辑器中上传图片
  10. MAC全局安装yarn
  11. SAP ABAP Loop…Assigning与Loop…Into的比较
  12. 一步一步SharePoint 2007之一:安装SharePoint
  13. python编程入门第一课_[转载]Python第一课教学设计及反思
  14. MT7628实现Amazon alexa语音控制
  15. html实现波浪,纯CSS实现波浪移动效果的示例
  16. 2020第二周美赛感想
  17. 计算机开机黑屏并有报警声,开机报警5声,开机黑屏报警8声
  18. ISTQB-TM-大纲
  19. 在线纯音听力测试软件,纯音听力测试
  20. 微软认证系统工程师(MCSE)

热门文章

  1. Java事务处理类(源码)
  2. .NET 中使用 Mutex 进行跨越进程边界的同步 - walterlv
  3. 解决Asp.net中的Chart控件运行出现错误提示“ ChartImg.axd 执行子请求时出错”
  4. OpenCV基本的阈值操作
  5. 目标检测的图像特征提取
  6. DuiC 统一配置管理 2
  7. JavaScript实现网页元素的拖拽效果
  8. Kafka Zero-Copy 使用分析
  9. 第10章 嵌入式linux的调试技术
  10. CodeIgniter开发实际案例-新闻网站【转】