代码改变世界

C++Primer阅读笔记-第3章-标准库类型 迭代器

2012-11-13 15:36  kennyMc  阅读(295)  评论(0)    收藏  举报

迭代器是一种检查容器内元素并遍历元素的数据类型,标准库为每一种标准容器定义了一种迭代器类型。
vector迭代器类型的定义:vector<int>::iterator iter;
这里iter的数据类型是由vector<int>定义的iterator类型。

begin和end操作
begin返回迭代器指向的第一个元素,end返回迭代器指向vector对象末端元素的下一个,表明它指向了一
个不存在的元素。
迭代器通过使用解引用操作符来访问迭代器所指向的元素。
迭代器通过自增操作移动到下一个元素。
注意:不能对end操作符返回的迭代器进行解引用或者自增。

#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::cin;
using std::vector;

int main()
{
    vector<int> v(10,0);
    for(vector<int>::size_type si=0;si!=v.size();si++)
    {
        v[si]=si;
    }
    for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)
    {
        cout<<(*iter)<<endl;
    }
    system("pause");
    return 0;
}

const_iterator类型只能用于读取容器内的元素,无法修改。
迭代器的算术操作
iter+n或者iter-n产生的距离类型为difference_type,加减后的值必须指向vector对象的某个元素。

    vector<int> v(10,0);
    for(vector<int>::size_type si=0;si!=v.size();si++)
    {
        v[si]=si;
    }
    vector<int>::iterator iter=v.begin();
    iter+=14;
    cout<<*iter<<endl;