STL iterator

 

迭代器类似于指针类型, 提供了对对象间接访问

分类

graph LR;
    I(迭代器)
    I-->A(正向迭代器)-->A1(iterator)
    I-->B(常量正向迭代器)-->B1(const_iterator)
    I-->C(反向迭代器)-->C1(reverse_iterator)
    I-->D(常量反向迭代器)-->D1(const_reverse_iterator)
    I-->E(输出流迭代器)-->E1(ostream_iterator)

const_iterator

与iterator功能相同, 但迭代器为const类型

ostream_iterator

  • 示例, 输出迭代器使用
#include <iostream>
#include <iterator>
#include <vector>

int main(){
    std::vector<int> v {1, 2, 3, 4, 5};
    // 1 2 3 4 5
    copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}

操作

修改

  • 示例, 迭代器间接修改
std::vector<int> v {1, 2, 3, 4, 5};

std::vector<T>::iterator it = v.begin() + 1;

*it = 100;

// v = {1, 100, 3, 4, 5}

遍历

for(vector<T>::iterator it = v.begin(); it != v.end(); it++){
    // *it
}
for(auto it = v.begin(); it != v.end(); it++){
    // *it
}