vector中用iterator怎么倒叙输出?

li_il 2008-10-12 07:55:27
vector中用iterator怎么倒叙输出?


for (vector<int>::iterator iter = intArray.begin(); iter != intArray.end(); ++iter){
cout << *iter << endl;
}


这样可以从头到尾输出,但是我希望能从尾到头输出,该怎样使用iterator呢?
...全文
496 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
spacegoing 2011-06-24
  • 打赏
  • 举报
回复
.end()就可以了
li_il 2008-10-13
  • 打赏
  • 举报
回复
问题解决了,该结贴了,谢谢各位!
cs258448 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 li_il 的回复:]
primer第四版,看了150多页了,印象中那个讲iterator的地方没有讲到reverse_iterator,难道是我看漏了?
[/Quote]
我也没发现有讲
mzlogin 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 li_il 的回复:]
primer第四版,看了150多页了,印象中那个讲iterator的地方没有讲到reverse_iterator,难道是我看漏了?
[/Quote]

C++ Primer第四版看到150多页肯定还没有的,
第三章讲容器讲得很概,
在第9章里有这些内容详细的讲解。
其实我也还没看到……
哈哈。
fang100 2008-10-12
  • 打赏
  • 举报
回复
用倒叙迭代器.....
Gump_BlueSky 2008-10-12
  • 打赏
  • 举报
回复

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
int a[ 4 ] = { 1, 2, 3, 4 };
vector< int > ivec( a, a + 4 );

vector< int >::reverse_iterator iter = ivec.rbegin();
while( iter != ivec.rend() ){
cout << *iter << " ";
++iter;
}
cout << endl;
return 0;
}
chlaws 2008-10-12
  • 打赏
  • 举报
回复
哈哈 ,我头晕了 给整错了 是该++
li_il 2008-10-12
  • 打赏
  • 举报
回复
primer第四版,看了150多页了,印象中那个讲iterator的地方没有讲到reverse_iterator,难道是我看漏了?
  • 打赏
  • 举报
回复
copy( intArray.rbegin(),rbegin.rend() , ostream_iterator<int>(cout,"\n") );
微甜呼吸 2008-10-12
  • 打赏
  • 举报
回复
reverse_iterator
呜!~搞错了
li_il 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 akirya 的回复:]
引用 3 楼 richbirdandy 的回复:

1楼是不提倡的方法

reverse_iterator != iterator
[/Quote]

哦,谢谢你,我原先不知道有倒叙的迭代器,所以才那么问的。
微甜呼吸 2008-10-12
  • 打赏
  • 举报
回复
for(vector<int>::iterator iter = intArray.rbegin(); iter != intArray.rend(); ++iter )
{
cout << *rit <<endl;
}

我看的C++Primer 第3版的上面应该是这个样子的
注意最后的更新部分,++iter
因为用的是rbegin()和rend()
倒着更新iter的时候还是要用++来操作
li_il 2008-10-12
  • 打赏
  • 举报
回复
从rbegin到rend,用++挺符合逻辑,呵呵。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chlaws 的回复:]
C/C++ codefor(vector<int>::reverse_iterator rit = intArray.rbegin();
rit!=intArray.rend(); rit--)
{cout << *rit <<endl; }
[/Quote]
for(vector<int>::reverse_iterator rit = intArray.rbegin();
rit!=intArray.rend(); rit++)//这里是++ 不是--
{cout << *rit <<endl; }
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 richbirdandy 的回复:]
1楼是不提倡的方法
[/Quote]
reverse_iterator != iterator
li_il 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chlaws 的回复:]
C/C++ code
for(vector<int>::reverse_iterator rit = intArray.rbegin();
rit!=intArray.rend(); rit--)
{cout << *rit <<endl; }


[/Quote]

我试验了一下,但是发现应该用 rit++,才会出现正确的结果。

不过还是谢谢你了。
richbirdandy 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chlaws 的回复:]
C/C++ codefor(vector<int>::reverse_iterator rit = intArray.rbegin();
rit!=intArray.rend(); rit--)
{cout << *rit <<endl; }
[/Quote]
reverse 我果然拼错了。。。
li_il 2008-10-12
  • 打赏
  • 举报
回复
哦?有倒叙的迭代器????

chlaws 2008-10-12
  • 打赏
  • 举报
回复
for(vector<int>::reverse_iterator rit = intArray.rbegin();
rit!=intArray.rend(); rit--)
{cout << *rit <<endl; }
richbirdandy 2008-10-12
  • 打赏
  • 举报
回复
1楼是不提倡的方法
加载更多回复(2)

65,211

社区成员

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

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