移动操作,以set为例
set<int>s = {1,3,4,9,7};
s.insert(2);
set<int>::iterator it = s.begin();
cout<<*it<<endl;// 1
advance(it,3);
cout<<*it<<endl;// 4
advance(it,-2);
cout<<*it<<endl;// 2
对于正向迭代器和反向迭代器:
rbegin()和rend()是反向迭代器,rbegin()是最后一个元素,rend()是第一个元素的左边
如图所示:
注意:迭代器与反向迭代器的相反位置并不完全对应!
注意:如果迭代器指向了容器中最后一个元素的后面或第一个元素的前面,再通过该迭代器访问元素,就有可能导致程序崩溃,这和访问 NULL 或未初始化的指针指向的地方类似。
前置++比后置++效率更高,因为后置++会有临时变量的开销。