map、set等背后由于红黑树的关系,插入元素后便成为“平衡”搜索树了,所以末尾元素默认为最大值,得到该值的方法:
1. 利用 rbegin() 反向迭代器
int main(int argc, char *argv[])
{
map<int,int>ans;
ans.insert(pair<int, int>(2,0));
ans.insert(pair<int, int>(1,0));
ans.insert(pair<int, int>(0,0));
map<int,int>::reverse_iterator a = ans.rbegin();
cout<<a->first<<endl; //打印为2
return 0;
}
关于反向迭代器,官方的例子是:
// map::rbegin/rend
#include <iostream>
#include <map>
int main ()
{
std::map<char,int> mymap;
mymap['x'] = 100;
mymap['y'] = 200;
mymap['z'] = 300;
// show content:
std::map<char,int>::reverse_iterator rit;
for (rit=mymap.rbegin(); rit!=mymap.rend(); ++rit)
std::cout << rit->first << " => " << rit->second << '\n';
return 0;
}
2.利用end--
int main()
{
set<int>a;
a.insert(2);
a.insert(1);
a.insert(0);
set<int>::iterator iter = a.end();
iter--;
cout<<(*iter)<<endl; //打印2
return 0;
}