C++迭代器iterator
来源:互联网 发布:淘宝代练可靠吗 编辑:程序博客网 时间:2024/06/11 05:49
1、迭代器(iterator)是一种检查容器内元素并遍历元素的数据类型
(1)每种容器类型都定义了自己的迭代器类型,如vector:
//这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型vector<int>::iterator iter;
(2)使用迭代器读取vector的每一个元素
vector<int> ivec(10, 1);for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) { *iter = 2;}//const_iterator//只能读取容器中的元素,而不能修改for (vector<int>::const_iterator citer = ivec.begin(); citer != ivec.end(); citer++) { cout << *citer; // error; // *citer = 3 ; }
vector::const_iterator和const vector::iterator的区别,前者不能修改所指向容器内的元素,后者是自身不能改变,也就是在初始化后就不能指向其它元素了。
(3)iterator的算术操作:
iterator除了进行++,–操作,可以将iter+n,iter-n赋值给一个另一个iterator对象。还可以使用一个iterator减去另外一个iterator。
const vector<int>::iterator newiter = ivec.begin();vector<int>::iterator newiter2 = ivec.end();cout << "\n" << newiter2-newiter;
一个典型的vector的STL程序:
#include <iostream>using namespace std;int main (int argc, char *argv[]){ std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); for (vector<int>::iterator iter = v.begin(); iter != v.end(); ++iter) { cout << *iter << endl; } return 0;}
2、Iterator(迭代器)模式
Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。
由于Iterator模式的以上特性:与聚合对象耦合,在一定程度上限制了它的广泛运用,一般仅用于底层聚合支持类,如STL的list、vector、stack等容器类及ostream_iterator等扩展iterator。
根据STL中的分类,iterator包括:
vector和deque提供的是RandomAccessIterator,list提供的是BidirectionalIterator,set和map提供的是ForwardIterator,关于STL中iterator迭代器的操作如下:
1、所有迭代器
2、输入迭代器
3、输出迭代器
4、正向迭代器
提供输入输出迭代器的左右功能。
5、双向迭代器
6、随机迭代器
只有顺序容器和关联容易支持迭代器遍历,各容器支持的迭代器的类别如下:
3、应用
Iterator模式有三个重要的作用:
1.它支持以不同的方式遍历一个聚合.复杂的聚合可用多种方式进行遍历,如二叉树的遍历,可以采用前序、中序或后序遍历。迭代器模式使得改变遍历算法变得很容易: 仅需用一个不同的迭代器的实例代替原先的实例即可,你也可以自己定义迭代器的子类以支持新的遍历,或者可以在遍历中增加一些逻辑,如有条件的遍历等。
2. 迭代器简化了聚合的接口. 有了迭代器的遍历接口,聚合本身就不再需要类似的遍历接口了,这样就简化了聚合的接口。
3. 在同一个聚合上可以有多个遍历 每个迭代器保持它自己的遍历状态,因此你可以同时进行多个遍历。
此外,Iterator模式可以为遍历不同的聚合结构(需拥有相同的基类)提供一个统一的接口,即支持多态迭代。
- C++vector 迭代器iterator
- 【c++】迭代器iterator
- C++Iterator Categories(迭代器种类)
- c ++ iterator
- [C++]iterator
- C++Primer——迭代器iterator
- C++primer 3.3 标准库 迭代器 iterator
- C++:标准程序库-STL迭代器Iterator
- Iterator(迭代器)
- Iterator-迭代器
- 迭代器 iterator
- Iterator迭代器
- 迭代器Iterator
- Iterator : 迭代器
- Iterator : 迭代器
- 迭代器Iterator
- 迭代器iterator
- Iterator迭代器
- 应用协议
- 我的软件工程课目标
- 26岁--最希望做给别人带来幸福的事情
- java中的三大特征之一多态
- VS 工程项目中用于获取当前项目根目录的方法
- C++迭代器iterator
- IP协议
- 数据压缩实验一:yuv转rgb
- 应用程序、内核、驱动的关系
- JavaWeb监听器
- 由一次SQL注入去理解防SQL注入
- 修改XAMPP for mac中的MySQL字符集
- 在云开发的新时代中,可以看到的十大趋势
- pthreads 里mutex和cond为何需要配合使用