逆向迭代器的使用疑问?

卡卡篷 2008-04-21 07:23:09
一直不会使用,逆向迭代器,不知道该怎么声明或者使用
比如一个vector<int> data;
声明他的逆向迭代器该是怎么样呢?这样typedef vector<int>::iterator iter;
还是这样typedef vector<int>::reverse_iterator iter;

然后用原始一点的方法逆向遍历
for (iter iter1=data.rbegin(), iter1!=data.rend, iter++)
这样行不行? 为什么会老出错呢?
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
js_geni 2009-02-26
  • 打赏
  • 举报
回复
非集合型容器 比如vector string list deque都可以
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yili16438 的回复:]
逆向迭带器在哪些容器中能用呢?哪些不能用呢?
vector string list
这些应该可以吧?
[/Quote]
这三个是有,其他的你看看有没有reverse_iterator
这个类型就知道支持不支持了
lockhall 2008-04-21
  • 打赏
  • 举报
回复
for (iter pt=data.rbegin(), pt!=data.rend(), pt++)

-->for (iter pt=data.rbegin(); pt!=data.rend(); pt++)
卡卡篷 2008-04-21
  • 打赏
  • 举报
回复
逆向迭带器在哪些容器中能用呢?哪些不能用呢?
vector string list
这些应该可以吧?
卡卡篷 2008-04-21
  • 打赏
  • 举报
回复
。。我晕啊。。犯这么低级的错误
for 里面出现了几个用成逗号了
再次感谢LS大哥!!!
c_spark 2008-04-21
  • 打赏
  • 举报
回复
#include  <vector> 
#include <iostream>
using namespace std;

int main()
{
int n[10]={9,8,7,6,5,4,3,2,1,0};
vector <int> data(n, n+10);
typedef vector <int>::reverse_iterator iter;
for(iter pt=data.rbegin(); pt!=data.rend(); pt++) //, -> ;
cout <<*pt <<" ";
cout <<endl;
return 0;
}
c_spark 2008-04-21
  • 打赏
  • 举报
回复
这样就不会出错了...
#include  <vector> 
#include <iostream>
using namespace std;

int main()
{
int n[10]={9,8,7,6,5,4,3,2,1,0};
vector <int> data(n, n+10);
vector <int>::reverse_iterator iter = data.rbegin();
//for (iter pt=data.rbegin(), pt!=data.rend(), pt++)
while(iter != data.rend())
{
cout <<*iter <<" ";
iter++;
}
cout <<endl;
return 0;
}
卡卡篷 2008-04-21
  • 打赏
  • 举报
回复
#include <vector>
#include <iostream>
using namespace std;

int main()
{
int n[10]={9,8,7,6,5,4,3,2,1,0};
vector<int> data(n, n+10);
typedef vector<int>::reverse_iterator iter;
for (iter pt=data.rbegin(), pt!=data.rend(), pt++)
cout<<*pt<<" ";
cout<<endl;
return 0;
}
上面代码错误,不过这个也有错。3个error
卡卡篷 2008-04-21
  • 打赏
  • 举报
回复
还是不行啊?下面是测试程序
#include <vector>
#include <iostream>
using namespace std;

int main()
{
int n[10]={9,8,7,6,5,4,3,2,1,0};
vector<int> data(n, n+10);
typedef vector<int>::reserve iter;
for (iter pt=data.rbegin(), pt!=data.rend(), pt++)
cout<<*pt<<" ";
cout<<endl;
return 0;
}
有9个error
  • 打赏
  • 举报
回复
typedef vector <int>::iterator iter
改为
typedef vector <int>::reverse_iterator iter

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧