首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

stl 地图 怎么反序迭代

2013-02-24 
stlmap 如何反序迭代!mapint,int::iterator stl_MapIterator Stl_Map-end()我想从尾部开始倒序迭代,

stl map 如何反序迭代!
map<int,int>::iterator stl_MapIterator = Stl_Map->end();

我想从尾部开始倒序迭代,我这样尝试后发现值出问题了,是为什么?
[解决办法]
#include<iostream>
#include<map>
using namespace std;
int main()
{
int j=0;
map<int,int>map_v;
for(int i=0;i<10;i++)
map_v.insert(make_pair(i,j++) );
map<int ,int>::reverse_iterator r_iter=map_v.rbegin();
while(r_iter!=map_v.rend())
{
cout<<r_iter->first<<" "<<r_iter->second<<" "<<endl;
        r_iter++;
}

return 0;
}
用反向迭代器,
如果用你那种方法是这样

#include<iostream>
#include<map>
using namespace std;
int main()
{
int j=0;
map<int,int>map_v;
for(int i=0;i<10;i++)
map_v.insert(make_pair(i,j++) );
map<int ,int>::iterator iter=map_v.end();
while(iter!=map_v.begin())
{
cout<<iter->first<<" "<<iter->second<<" "<<endl;
        iter--;
}

return 0;
}


不过第一个值出错了
















[解决办法]


map<int,int> yourMap;
// add some key-value contents

for (map<int,int>::reverse_iterator it=yourMap.rbegin(); it!=yourMap.rend(); it++)
{
       // do something with element which was indicated by iterator it
}

热点排行