STL学习笔记(迭代器配接器)
Reverse(逆向)迭代器
Reverse迭代器是一种配接器。 重新定义递增运算和递减运算。使其行为正好倒置。
如果你使用这类迭代器,算法将以逆向次序处理元素。所有标准容器都允许使用Reverse迭代器来遍历元素。下面是个例子:
#include <iostream>
#include <list>
#include <algorithm>
using namespace std; void print(int elem)
{
cout<<elem<<' ';
} int main()
{
list<int> coll;
for(int i=;i<=;++i)
coll.push_back(i);
for_each(coll.begin(),coll.end(),print);
cout<<endl;
for_each(coll.rbegin(),coll.rend(),print);
cout<<endl;
}
Insert(安插型)迭代器
通过这种迭代器,算法可以执行安插行为而非覆盖行为。它提供以下操作

C++标准程序库提供三种Insert迭代器:back Inserters、front inserters、general Inserters。它们之间的区别在于插入位置。
事实上它们各自调用所属容器中不同的成员函数。

显然,容器本身必须支持Insert迭代器所调用的函数,否则该种Insert迭代器就不可用。
下面展示了back inserters的用法
#include <iostream>
#include <vector>
#include <algorithm>
#include "print.cpp"
using namespace std; int main()
{
vector<int> coll;
back_insert_iterator<vector<int> > iter(coll);
*iter=;
iter++;
*iter=;
iter++;
*iter=;
PRINT_ELEMENTS(coll);
back_inserter(coll)=;
back_inserter(coll)=;
PRINT_ELEMENTS(coll);
coll.reserve(*coll.size());
copy(coll.begin(),coll.end(),back_inserter(coll));
PRINT_ELEMENTS(coll);
}
Stream(流)迭代器
我们可以通过Stream迭代器把stream当成算法的原点和起点。
一个istream迭代器可用来从input stream中读取元素,而一个ostream迭代器可以用来对output stream写入元素。
1.Ostream迭代器
ostream迭代器可以将被赋予的值写入output stream中。如此一来算法就可以使用一般的迭代器接口直接对stream执行涂写动作。下面列出ostream迭代器的各个操作函数。

下面演示ostream迭代器的用法
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std; int main()
{
ostream_iterator<int> intWriter(cout,"\n");
*intWriter=;
intWriter++;
*intWriter=;
intWriter++;
*intWriter=-;
vector<int> coll;
for(int i=;i<=;++i)
coll.push_back(i);
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout));
cout<<endl;
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," < "));
cout<<endl;
}
2.istream迭代器
istream迭代器用来从input stream读取元素。透过istream迭代器,算法可以从stream中直接读取数据。
下面是istream迭代器的各项操作函数

下面展示istream迭代器的各项操作
#include <iostream>
#include <iterator>
using namespace std; int main()
{
istream_iterator<int> intReader(cin);
istream_iterator<int> intReaderEOF;
while(intReader!=intReaderEOF)
{
cout<<"once: "<<*intReader<<endl;
cout<<"once again: "<<*intReader<<endl;
++intReader;
}
}
STL学习笔记(迭代器配接器)的更多相关文章
- STL学习笔记:空间配置器allocator
allocator必要接口: allocator::value_type allocator::pointer allocator::const_pointer allocator::referenc ...
- 《Head first设计模式》学习笔记 – 迭代器模式
<Head first设计模式>学习笔记 – 迭代器模式 代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了!真是个 ...
- Effective STL 学习笔记 32 ~ 33
Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor
Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor */--> div ...
- 【STL学习笔记】一、STL体系
目录 1.标准库以header files形式呈现 2.namespce命名空间 3.STL与OO 4.STL六组件及其关系 5.STL组件例子 6.range-based for statement ...
- ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理
ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value
Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...
- Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据
Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...
随机推荐
- centos dhcp获取不到ip解决方法 Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.
1.删除文件: /etc/udev/rules.d/70-persistent-net.rules 2.编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 删除H ...
- 如何在natTable表格上添加双击事件
在项目当中,有时候需要双击表格中的某一行触发一个事件或者一次数据请求,这时候,我们就需要在表格中绑定相关事件,思路实际上很简单,添加一个绑定事件就ok了,那么怎么添加呢?简单实现如下: 1.创建绑定双 ...
- cmake add_executable 与 include_directories
在cmake里add_executable里如果没有包含.cpp文件,该.cpp文件就不适用include_directories包含文件
- PSR-2 编码风格规范
本篇规范是 PSR-1 基本代码规范的继承与扩展. 本规范希望通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造成不便. 当多名程序员在多个项目中合作时,就需要一 ...
- spring boot的pom.xml配置,正确生成jar包
spring boot生成的jar包提示没有主清单属性. 需要在pom里加入配置. <?xml version="1.0" encoding="UTF-8" ...
- (33)C#正则表达式
正则表达式:专门用于字符串处理的语言,用来描述字符串特征的表达式 元字符 . 之间可以出现任意单个字符(除了\n 换行) 例如: a.b 意思是这个表达式必须是三个字符,第一个字符是a,第三个字符 ...
- 洛谷 P3955 图书管理员【模拟/思维】
题目描述 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数. 每位借书的读者手中有一个需求码,这个需求码也是一个正整数.如果一本书的图 书编码恰好以读者的需求码结尾,那 ...
- POJ 1298 The Hardest Problem Ever【字符串】
Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever faced was ke ...
- Jmeter实时性能测试数据的监控
Jmetet实时性能测试数据的监控和展示Jmeter Grafana InfluxDB 安装Grafana配置jmeter安装InfluxDB配置Grafana展示数据一安装InfluxDB 为了方便 ...
- hiho一下第133周 2-SAT·hihoCoder音乐节(2-SAT)(强连通)
2-SAT·hihoCoder音乐节 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder音乐节由hihoCoder赞助商大力主办,邀请了众多嘉宾和知名乐队 ...