zoukankan      html  css  js  c++  java
  • VC++ 迭代器 iterator, const_iterator, const iterator

    迭代器 iterator, const_iterator, const iterator

    迭代器iterator的作用类似于指针。

    (1)iterator只有针对制定<类型>的容器才有效。例如:

    vector<int> vec;
    
    vector<int>::iterator itr;

    对于vec来说,itr.begin()指向的是vec的第一个元素。Itr.end()指向的是vec的最后一个元素的下一个元素(作为哨兵,实际不存在)。可用itr.begin() == itr.end()来判断容器是否为空。

    像指针一样,itr可以++,*itr表示解引用,即表示容器内被itr指向的元素。

    (2)const_iterator为一种迭代器,这种迭代器可以读取其指向的内容,也可以自增,但是不可以对其指向的内容进行“写“操作。

    例如:

    vector<int>::const_iterator constItr = vec.begin();
    
    cout<< *constItr << endl; //正确
    
    constItr++;//正确
    
    *constItr = 10;//错误!

    另外,由于const_iterator只可读取其指向的内容,所以可以用const_iterator作为const 的 容器的迭代器。

    (3)容易混淆的 由const 修饰符修饰的iterator

    其几乎无作用。

    与普通的iterator一样,其可以解引用,并可以修改其指向的内容。但迭代器本身不可被修改,因为它由const修饰。

    所以该iterator不能自增,其只能为第一次赋予的值,故并无明显的作用。

    P.S:合法的指针运算:

    • 相同类型指针之间的赋值运算
    • 指针同整数之间的加减法运算
    • 相同类型指针之间的减法和比较运算
    • 将指针赋值为0 或 指针与0之间的比较运算
  • 相关阅读:
    Java中抽象类和接口的区别(abstract class VS interface)
    ECUST_Algorithm_2019_4
    ECUST_Algorithm_2019_3
    杂题
    ECUST_Algorithm_2019_2
    Magolor的数据结构作业
    ECUST_Algorithm_2019_1
    atcoder 泛做
    2018中国大学生程序设计竞赛
    UVA
  • 原文地址:https://www.cnblogs.com/lujin49/p/4933871.html
Copyright © 2011-2022 走看看