赞
踩
先说说它是干嘛的吧!迭代器的作用是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。没错!这和访问数组这个序列的指针一样,因为数组范围内的指针就是迭代器的一种。
1.指针针是C语言里面就有的东西,而迭代器是C++里面才有的
2.指针用起来灵活,效率高。迭代器功能更丰富一些
3.指针通常用来访问的是序列的元素,但不是所有的容器都会在连续的内存空间上保存数据。所以,对于这些容器我们不能单纯地使用指针作为迭代器,而是针对每一种容器,都会有专门配对的迭代器。
4.指针用起来灵活,效率高。迭代器功能更丰富一些,c++的stl里面很多算法都是基于迭代器的,一部分算法的参数可以传递指针作为迭代器使用。
对于所有的迭代器,它们的使用方法和指针一样,比如自增(++),解引用(*)。除了数组以外,在大部分的容器中都会提供成员函数beget()(在类中创建,类是C++中对于C语言中的结构体的延伸),用来获取容器开始位置的迭代器,会提供成员函数end(),用来获取容器结束位置的迭代器。
begin()相当于数组中首元素地址,end()相当于末元素后一位置的地址(首元素地址+元素数量)
InputIterator(输入迭代器):只要求支持拷贝、自增和解引访问。
OutputIterator(输出迭代器):只要求支持拷贝、自增和解引赋值。
ForwardIterator(向前迭代器):同时满足 InputIterator 和 OutputIterator 的要求。
BidirectionalIterator(双向迭代器):在 ForwardIterator 的基础上支持自减(即反向访问)。
RandomAccessIterator(随机访问迭代器):在 BidirectionalIterator 的基础上支持加减运算和比较运算(即随机访问)
vect<int>是一种数据结构—我们熟悉的数组(亦称列表)
用vect<int>::iterator定义迭代器iter
(迭代器的类型就为container::iterator)(container是某个STL容器)
arr.begin()是返回值指向首元素的为迭代器的函数
更多有关迭代器的函数请看下一栏
sort()和reverse()都是STL提供的算法函数
可以大大提高写代码的效率哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。