c++怎样逆向遍历STL容器
以vector<int>为例正向遍历:for(std::vector<int>::itoratoriter=myVec.begin();iter!=myVec.end()...
以vector<int>为例
正向遍历:
for(std::vector<int>::itorator iter = myVec.begin(); iter != myVec.end(); iter++)
{……}
上述代码没问题。
但是我改成逆向遍历:
begin改为rbegin,end改为rend,++改为--
然后编译不通过
itorator打错了,应为iterator 展开
正向遍历:
for(std::vector<int>::itorator iter = myVec.begin(); iter != myVec.end(); iter++)
{……}
上述代码没问题。
但是我改成逆向遍历:
begin改为rbegin,end改为rend,++改为--
然后编译不通过
itorator打错了,应为iterator 展开
4个回答
展开全部
rbegin()是一个反向迭代器,其类型应该是reverse_iterator而不是iterator。
代码如下:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
v.clear();
for(int i = 1; i <= 5; i++)
v.push_back(i);
vector<int>::iterator it;
for(it = v.begin(); it != v.end(); it++)
printf("%d ", *it);
printf("\n");
it = v.end();
for(it--; it >= v.begin(); it--)
printf("%d ", *it);
printf("\n");
vector<int>::reverse_iterator rit;
for(rit = v.rbegin(); rit != v.rend(); rit++)
printf("%d ", *rit);
printf("\n");
getchar();
return 0;
}
展开全部
rbegin()是一个反向迭代器,其类型应该是reverse_iterator而不是iterator。
我写了两个反向遍历的方法给楼主,下面是代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
v.clear();
for(int i = 1; i <= 5; i++)
v.push_back(i);
vector<int>::iterator it;
for(it = v.begin(); it != v.end(); it++)
printf("%d ", *it);
printf("\n");
it = v.end();
for(it--; it >= v.begin(); it--)
printf("%d ", *it);
printf("\n");
vector<int>::reverse_iterator rit;
for(rit = v.rbegin(); rit != v.rend(); rit++)
printf("%d ", *rit);
printf("\n");
getchar();
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是有reverse_iterato用吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询