迭代器的初识

来源:互联网 发布:软件项目保密管理制度 编辑:程序博客网 时间:2024/06/05 04:49

我们一家指定可以使用下标运算符来访问string对象的字符或vector对象的元素。还有另外一种更通用的机制也可以实现同样的目的。这就是迭代器。

除了vector之外,标准库还定义了其他集中容器,所以标准库容器都可以使用迭代器。

类似于指针类型,迭代器也提供了对对象的间接访问。就迭代器而言,其对象是容器中的元素或者string对象中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置。



和指针不同的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员,比如,这些类型都拥有名为begin和and的成员,其中begin成员负责返回指向第一个元素的迭代器。


使用==和!=来比较两个合法的迭代器是否相等,如果两个迭代器指向的元素相同或者都是同一个容器的尾后迭代器,则他们相等,否则就说这个两个迭代器不相等。

*item返回迭代器iter所指元素的引用

item->mem解引用iter并获取该元素名为men的成员,等价于(*iter).men


迭代器类型

就像不知道string和vector的size_type成员到底是什么类型一样,一般来说我们也不知道迭代器的精确类型。而实际上,那些拥有迭代器的标准库类型使用iterator和const_iterator来表示迭代器类型

vector<int>::iterator it

sreing::iterator it2;



0 0