1. 迭代器分类
类别(Category) | 举例 |
---|---|
输入迭代器(Input Iterator) | istream |
输出迭代器(Output Iterator) | ostream |
前向迭代器(Forward Iterator) | forward_list、unordered_set、unordered_multiset、unordered_map、unordered_multimap |
双向迭代器(Bidirectional Iterator) | list、map、set 、multiset、multimap |
随机访问迭代器(Random-Access Iterator) | vector、array、deque、string、内置数组 |
迭代器表达式对比:
2. 迭代器操作
函数 | 作用 |
---|---|
void advance (InputIterator& it, Distance n) | 迭代器向后移动n个元素 |
distance (InputIterator first, InputIterator last) | last与first间隔元素个数 |
分别使用 vector 和 list
begin 迭代器向后移动2个元素
begin 迭代器之间的元素个数
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main(){
vector<int> vec = {
1,3,5,7,9};
auto vec_it = vec.begin(); // 获取迭代器
// cout << *(vec_it+2) << endl; // 向后移动2个元素
advance(vec_it,2);
cout << *vec_it << endl;
// 两个迭代器之间的距离
// cout << vec_it - vec.begin() << endl; //
cout << distance(vec.begin(),vec_it) << endl;
list<int> list = {
2,4,6,8,0};
auto list_it = list.begin();
// cout << *(list_it+2) << endl; 双向迭代器不支持算