迭代器与反向迭代器
来源:互联网 发布:淘宝订单贷款 编辑:程序博客网 时间:2024/05/19 10:08
这里以链表为例:直接上代码,解释理解起来比较容易
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
void Show(int n_Value){
cout<<n_Value<<" ";
}
int main(){
list<int> list1;
list1.push_back(1);
list1.push_back(2);
list1.push_back(3);
list1.push_back(4);
list1.push_back(5);
list1.push_back(3);
/*1. begin() end()和front() back()之间的区别:
begin和end返回的是一个迭代器(即一个指针)而front和back返回的是头尾的内容(返回一个值)
*/
cout<<*(list1.begin())<<" "<<*(--(list1.end()))<<endl;//由于end指向list最后元素的下一个元素,由此需要--
cout<<list1.front()<<" "<<list1.back()<<endl;
::for_each(list1.begin(),list1.end(),&Show);
cout<<endl;
/*2.注意:添加、删除操作时迭代器需要进行重新赋值:下面代码是实现删除表中所有相同元素*/
//list<int>::iterator ite=list1.begin();
//while (ite!=list1.end())
//{
// if(*ite==3){
// ite=list1.erase(ite);//添加、删除操作时迭代器需要进行重新赋值 --本句得到的ite是3的下一个,所以该句本身就实现了ite++操作
// }else
// ite++;
//}
//::for_each(list1.begin(),list1.end(),&Show);
/*反向迭代器的使用:反向迭代器中删除一个元素时,需要首先将其转换成正向迭代器,注意:转换的时候有一个位移偏差,需要进行相应调整。原因是,
begin指向list(双向链表)首元素,end指向链表末尾元素的下一个元素。而rbegin指向末尾元素,rend指向首元素的前一个元素
*/
list<int>::reverse_iterator rev_ite=list1.rbegin();
while (rev_ite!=list1.rend())
{
if(*rev_ite==3){
list<int>::iterator ite=--(rev_ite.base());//转成正向1-[反向的开始是正向的尾,该反向转换后会指向尾元素的下一个元素,由此进行--偏移操作],再进行一个位置的偏移量
//list<int>::iterator ite=(++rev_ite).base(); //转成正向2-不推荐使用这个,因为rev_ite已经移动了
//cout<<*ite;
list1.erase(ite);
break;
}
++rev_ite;
}
::for_each(list1.begin(),list1.end(),&Show);
}
- 迭代器与反向迭代器
- 反向迭代器
- 反向迭代器
- 反向迭代器
- STL反向迭代器与STL排序
- 迭代器 反向迭代器
- 反向迭代器reverse_iterator
- c++之反向迭代器
- 反向迭代器的使用
- 【ThinkingInJava】23、反向迭代器
- 反向迭代器的++和--
- 反向迭代器(Reverse Iterator)
- 反向迭代器删除元素
- 反向迭代器的使用
- Vector反向迭代器使用
- C++ 反向迭代器注意事项
- c++反向迭代器
- 【STL】反向迭代器
- 5. Longest Palindromic Substring(middle)
- React-native数独游戏(二)界面实现
- C/C++中数据类型范围
- F - Pasha Maximizes
- python 3-2 如何实现可迭代对象和迭代器对象(2) BookIterable/BookIterator
- 迭代器与反向迭代器
- storm三之集群架构
- 在使用Mybatis 做查询时遇到查询到的对象为空的问题
- UOJ164 V 线段树历史查询
- 线程的基本概念及线程与进程的关系
- php urlencode和urldecode
- 浅谈MDN JavsScript
- Mybatis 高级结果映射 ResultMap Association Collection
- HDU 2612 Find a way (两次bfs)