• 1.(P252)

迭代器的分类及其能力:

input迭代器只能读取元素一次。如果复制input迭代器,并使原迭代器和新产生副本都向前读取,可能会遍历到不同的值。output迭代器类似。

  • 2.(P258)

C++不允许修改任何基本类型(包括指针)的暂时值,但对于struct, class则允许。

所以:

1
2
vector<int> ivec;
sort(++ivec.begin(), ivec.end());

也许会失败,这取决于vector的实作版本。

  • 3.(P259)

C++标注库为迭代器提供的三个辅助函数
①. advance() 前进(或后退)多个元素

1
2
#include <iterator>
void advance(InputIterator & pos, Dist n)

注:对于Bidirectional迭代器或Random Access迭代器,n可以为负值,表示后退
②. distance()  处理迭代器之间的距离

1
2
#include <iterator>
Dist distance (InputIterator pos1, InputIterator pos2)

③. iter_swap() 可交换两个迭代器所指内容

1
2
#include <algorithm>
void iter_swap(ForwardIterator pos1, ForwardIterator pos2)

注:不是交换迭代器!

  • 4.(P264)

迭代器配接器之Reverse(逆向)迭代器
对于reverse iterator,他实际所指位置与逻辑所指位置并不一样:
eg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; int main()
{ vector<int> coll; for (int i=1; i<=9; ++i) { coll.push_back(i); } vector<int>::iterator pos; pos = find (coll.begin(), coll.end(),5); cout << "pos: " << *pos << endl; vector<int>::reverse_iterator rpos(pos); cout << "rpos: " << *rpos <<endl;
}

结果是:
pos: 5
rpos: 4

这是reverse iterator的内部机理图(*):

可以看出,[begin(), end() ) 和 [rbegin(), rend() )的区间是一样的!
base()函数可以将逆向迭代器转回正常迭代器

eg.

1
pos = rpos.base();

注:

1
vector<int>::reverse_iterator rpos(pos);

可以将迭代器赋值给逆向迭代器从而隐式转换,而将逆向迭代器转换成普通迭代器则只能用base()函数。
这一块内容颇多,要认真把P264~P270看看。

  • 5.(P271)

迭代器配接器之Insert(安插)迭代器

  • 6.(P277)

迭代器配接器之Stream(流)迭代器
Osream流迭代器:

Istream流迭代器

综合性的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Author: Tanky Woo
// Blog:   www.WuTianQi.com
#include <iostream>
#include <vector>
#include <iterator>using namespace std; int main()
{ istream_iterator<int> cinPos(cin); istream_iterator<int> cinEnd; ostream_iterator<int> coutPos(cout, " "); while(cinPos != cinEnd) *coutPos++ = *cinPos++; return 0;
}

转载于:https://www.cnblogs.com/tanky_woo/archive/2011/01/29/1947547.html

《C++标准程序库》学习笔记5 — 第七章相关推荐

  1. PMBOK(第六版) 学习笔记 ——《第七章 项目成本管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  2. 《自然语言处理(哈工大 关毅 64集视频)》学习笔记:第七章 句法分析技术

    视频列表: 43 句法分析技术(一) 44 句法分析技术(二) 45 句法分析技术(三) 46 句法分析技术(四) 47 句法分析技术(五) 43 句法分析技术(一) 第七章 句法分析技术 什么是句法 ...

  3. 【OpenCV 学习笔记】第七章: 图像平滑处理

    第七章: 图像平滑处理 1.什么是图像平滑处理 图像平滑处理就是,将图像中与 周围像素点的像素值差异较大的像素点 调整成 和周围像素点像素值 相近的值. 例如: 2.为什么要进行平滑处理? 因为图像在 ...

  4. CS231n 计算机视觉(学习笔记)第七章(0809)

    第七章 7.1 Fancier optimization SGD存在问题: 在不同方向上抖动 局部极小值/鞍点 随机梯度,时间成本 Nesterov优化: 在SGD中加入一个动量(一个速度) 将梯度加 ...

  5. 【EasyRL学习笔记】第七章 深度Q网络进阶技巧(Double-DQN、Dueling-DQN、Noisy-DQN、Distributional-DQN、Rainbow-DQN)

    文章目录 一.双深度Q网络(DDQN) 二.竞争深度Q网络(Dueling DQN) 三.优先级经验回放 四.在蒙特卡洛方法和时序差分方法中取得平衡 五.噪声深度Q网络(Noisy DQN) 六.分布 ...

  6. 深度学习Bible学习笔记:第七章 深度学习中的正则化

    一.正则化介绍 问题:为什么要正则化? NFL(没有免费的午餐)定理: 没有一种ML算法总是比别的好 好算法和坏算法的期望值相同,甚至最优算法跟随机猜测一样 前提:所有问题等概率出现且同等重要 实际并 ...

  7. 【操作系统】Oranges学习笔记(六) 第七章 输入/输出系统

    文章目录 7.1 键盘 7.1.1 从中断开始──键盘初体验 7.1.2 AT.PS/2键盘 7.1.3 键盘敲击的过程 7.1.4 用数组表示扫描码 7.1.5 键盘输入缓冲区 7.1.6 用新加的 ...

  8. 郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测...

    7.1.1 回归与现代预测 7.1.2 最小二乘法 7.1.3 代码实现 (1)导入数据 def loadDataSet(self,filename): #加载数据集X = [];Y = []fr = ...

  9. 【机器人工具箱学习笔记】第七章 机械臂运动学

    函数库 import %装载 ETS2.* %二维空间 ETS3.* %三维空间 Rz() %绕z轴旋转 Tx() %沿着x轴平移 .fkine() %正运动学 .teach %示教 .structu ...

最新文章

  1. 数据库历险记(二) | Redis 和 Mecached 到底哪个好?
  2. LVS TUN模式搭建
  3. (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat
  4. mysql中sum (if),我可以在MySQL中将SUM()与IF()一起使用吗?
  5. 以太网实习_物联网通信硬件入门项目—光纤收发器(1)——实习内容,适用范围,技术及收益...
  6. 织梦dedecms如何对列表添加判断语句
  7. MCtalk对话学霸君:在线教育“1对多小班化”是个伪命题
  8. SpringBoot_入门-微服务简介
  9. PHP检查PEAR是否工作
  10. 团队开发git使用各种问题
  11. PP视频如何将默认缓存清晰度设置成超清
  12. 使用Vue2.x高效还原美团外卖项目
  13. java validate校验_自定义工具类实现validate参数校验
  14. Layer/jquery获取父窗口的元素
  15. zabbix使用SNMP监控思科无线控制器WLC
  16. fl studio mobile安卓,ios下载
  17. 连续两次入围Gartner魔力象限的Quick BI到底有何魔力?
  18. 软工网络15团队作业7——Alpha冲刺之事后诸葛亮
  19. vxworks培训笔记
  20. 智能家居项目(八)之树莓派+摄像头进行人脸识别

热门文章

  1. window服务器开站点(不通用)
  2. Python冒泡排序(4)
  3. metric learning -- 马氏距离与欧氏距离
  4. SQL中实现截取字符串的函数
  5. 如何使用emacs编写c语言程序,并编译运行
  6. LInux 下文件包的使用
  7. 数据中心传输需求成以太网市场巨大推动力
  8. java   cxf实现webservice接口方式之不依赖spring
  9. rip,ospf,eigrp内部网关协议的区别与用法
  10. 学习SharePoint记录,微软给出的的Application Templates很有帮助呢