STL游标—迭代器(itertor)的使用
来源:互联网 发布:冰岛足球 知乎 编辑:程序博客网 时间:2024/06/06 13:25
摘抄自
http://blog.csdn.net/bingxuebage/article/details/5729064
1. 介绍
使用前要注意加上头文件 #include<iterator>
迭代器实际上是一种泛化指针,如果一个迭代器指向了容器中的某一成员,那么迭代器将可以通过自增自减来遍历容器中的所有成员。迭代器是联系容器和算法的媒介,是算法操作容器的接口。在运用算法操作容器的时候,我们常常在不知不觉中已经使用了迭代器。
STL中定义了6种迭代器:
输入迭代器,在容器的连续区间内向前移动,可以读取容器内任意值;
输出迭代器,把值写进它所指向的队列成员中;
前向迭代器,读取队列中的值,并可以向前移动到下一位置(++p,p++);
双向迭代器,读取队列中的值,并可以向前向后遍历容器;
随机访问迭代器,
vector<T>::iterator,list<T>::iterator
等都是这种迭代器 ;流迭代器,可以直接输出、输入流中的值
2. 例程
下面的例子用到了输入输出迭代器
#include <iostream> #include <fstream> #include <iterator> #include <vector> #include <string> using namespace std;int main(){ vector<string> v1; ifstream file1; file1.open("D://test.txt"); if (file1.fail()) { cout << "open file test.txt failed" << endl; return 1; }/* vector<string>vec1(istream_iterator<string>(file1), istream_iterator<string>()); 这种方式会报错,请问为什么*/ copy(istream_iterator<string>(file1), istream_iterator<string>(), inserter(v1, v1.begin())); copy(v1.begin(),v1.end(), ostream_iterator<string>(cout, "\n")); cout << endl; return 0;}
这里用到了输入迭代器istream_iterator,输出迭代器ostream_iterator。程序完成了将一个文件输出到屏幕的功能,先将文件读入,然后通过输入迭代器把文件内容复制到类型为字符串的向量容器内,最后由输出迭代器输出。Inserter是一个输入迭代器的一个函数(迭代器适配器),它的使用方法是:
inserter (container ,pos);
container是将要用来存入数据的容器,pos是容器存入数据的开始位置。上例中,是把文件内容存入(copy())到向量v1中。
函数注解:
1.ifstream
在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
如果open函数只有文件名一个参数,则是以读/写普通文件打开,即: file1.open("c://config.sys");
等价于file1.open("c://config.sys",ios::in|ios::out,0);
另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:
fstream file1("c://config.sys");
2.copy函数用法
原型 copy(_InIt _First, _InIt _Last,_OutIt _Dest)
将容器中的元素从一个区间复制到另一个区间。_InIt _First, _InIt _Last,_OutIt _Dest 进行的是前向处理
详细参见
http://blog.csdn.net/ozwarld/article/details/8251808
STL copy()函数用法
- STL游标—迭代器(itertor)的使用
- STL itertor概念和traits编程技法(一)
- STL itertor概念和traits编程技法(二)
- C++之itertor迭代器
- 关于迭代器itertor在遍历中出现的问题
- 游标的使用(转)
- 用枚举器itertor的原因
- 设计模式之16 - 迭代器模式Itertor
- ORACLE,游标,存储过程,游标的使用(10)
- 理解游标(3)隐式游标的使用
- STL迭代器的使用(原名三十分钟掌握stl)
- 数据库使用游标(Cursor)的问题
- PL/SQL程序设计(游标的使用)
- sys_refcursor的使用(oracle自定义游标)
- SAP ABAP游标的使用(示例)
- 游标的是使用问题(转)
- SAP ABAP游标的使用(示例)
- SQL 游标的使用(更新数据)
- Rescue HDU
- D3 笔记五:过渡、transition、duration、ease、delay
- C++中,自定义string类,实现字符串的赋值“=”和连接函数“+”
- 数据类型初始化后的默认值
- 推荐一款makdown剪辑器-mditor
- STL游标—迭代器(itertor)的使用
- 【CSS 基础】06 盒子模型
- 【搜索入门专题1】E
- 深入理解Java虚拟机 第七章 虚拟机类加载时机与过程
- redis持久化选项
- 205. Isomorphic Strings
- API学习Stack
- 模板--Floyd Dijkstra Bellman-Ford spfa 四种最短路经典算法
- Hdu1329Hanoi Tower Troubles Again!