标准库定义了五种iterator:
input output
\ /
forward
|
bidirectional
|
random access
InputIterator: 从容器中读,不能写,遍历一次。
OutputIterator: 向容器中写,不能读,遍历一次。
ForwardIterator: 单向遍历容器,可读写。
BldirectionalIterator: 双向遍历容器,可读写。 (list, map, set)
RandomAccessIterator: 支持双向遍历,并且可访问任意元素,可读写。 (vector,deque)
const_iterator
const vector<int> v(5,5); //const vector
vector<int>::const_iterator itc = v.begin(); //cosnt_iterator
itc++; //遍历
//*itc = 6; //const_iterator指向的值不能改变
三种迭代器适配器:
插入迭代器
vector<int> ves(6,8);
vector<int> ved;
//调用元素的赋值操作符
unique_copy( ves.begin(), ves.end(), ved.begin() ); //error,ved没有分配空间
unique_copy( ves.begin(), ves.end(), back_inserter(ved) ); //用push_back()替换赋值
//三种插入迭代器
back_inserter(ved); //push_back()
front_inserter(ved); //push_front()
inserter(ved, ved.begin()); //insert()
反向迭代器
vector<int> v(5,5);
vector<int>::reverse_iterator rit; //反向迭代器
rit = v.rbegin(); //最后一个元素
rit++; //向前移
iostream迭代器
copy( istream_iterator< int >( cin ), istream_iterator< int >(), ostream_iterator< int >( cout ));