迭代器类似于指针类型, 提供了对对象间接访问
分类
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
}
上篇质数