// set::key_comp
#include <iostream>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
int main ()
{
std::set<int> myset;
int highest1, highest2, highest3;
typedef map<int, int> MyMap;
MyMap mymap;
std::set<int>::key_compare myCompKeyForSet = myset.key_comp();
std::set<int>::value_compare myCompValForSet = myset.value_comp();
MyMap::key_compare myCompKeyForMap = mymap.key_comp();
MyMap::value_compare myCompValForMap = mymap.value_comp();
for (int i=0; i<=5; i++) {
myset.insert(i);
mymap.insert(make_pair(i, 2*i));
}
//////SET///////
highest1=*myset.rbegin();
std::set<int>::iterator it=myset.begin();
while ( myCompKeyForSet(*it, highest1) ) it++;
std::cout << "\nhighest1 is " << highest1;
highest2 = *myset.rbegin();
it=myset.begin();
while ( myCompValForSet(*it, highest2) ) it++;
std::cout << "\nhighest2 is " << highest2;
//////MAP///////
MyMap::iterator it2 = mymap.begin();
highest3 = mymap.rbegin()->first;
while ( myCompKeyForMap((it2->first), highest3) ) it2++;
std::cout << "\nhighest3 is " << highest3;
std::pair<int,int> highest4 = *mymap.rbegin();
it2 = mymap.begin();
while ( myCompValForMap(*(it2), highest4) ) it2++;
std::cout << "\nhighest4 is " << highest4.second;
return 0;
}
Ly8gc2V0OjprZXlfY29tcAojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4gKCkKewogIHN0ZDo6c2V0PGludD4gbXlzZXQ7CiAgaW50IGhpZ2hlc3QxLCBoaWdoZXN0MiwgaGlnaGVzdDM7CiAgdHlwZWRlZiBtYXA8aW50LCBpbnQ+IE15TWFwOwogIE15TWFwIG15bWFwOwogIAogIHN0ZDo6c2V0PGludD46OmtleV9jb21wYXJlICAgbXlDb21wS2V5Rm9yU2V0ID0gbXlzZXQua2V5X2NvbXAoKTsKICBzdGQ6OnNldDxpbnQ+Ojp2YWx1ZV9jb21wYXJlIG15Q29tcFZhbEZvclNldCA9IG15c2V0LnZhbHVlX2NvbXAoKTsKICAKICBNeU1hcDo6a2V5X2NvbXBhcmUgICBteUNvbXBLZXlGb3JNYXAgPSBteW1hcC5rZXlfY29tcCgpOwogIE15TWFwOjp2YWx1ZV9jb21wYXJlIG15Q29tcFZhbEZvck1hcCA9IG15bWFwLnZhbHVlX2NvbXAoKTsKCiAgCiAgZm9yIChpbnQgaT0wOyBpPD01OyBpKyspIHsKICAgICAgbXlzZXQuaW5zZXJ0KGkpOwogICAgICBteW1hcC5pbnNlcnQobWFrZV9wYWlyKGksIDIqaSkpOwogIH0KCiAgLy8vLy8vU0VULy8vLy8vLwoKICBoaWdoZXN0MT0qbXlzZXQucmJlZ2luKCk7CiAgc3RkOjpzZXQ8aW50Pjo6aXRlcmF0b3IgaXQ9bXlzZXQuYmVnaW4oKTsKICB3aGlsZSAoIG15Q29tcEtleUZvclNldCgqaXQsIGhpZ2hlc3QxKSApIGl0Kys7CiAgc3RkOjpjb3V0IDw8ICJcbmhpZ2hlc3QxIGlzICIgPDwgaGlnaGVzdDE7CiAgCiAgCiAgaGlnaGVzdDIgPSAqbXlzZXQucmJlZ2luKCk7CiAgaXQ9bXlzZXQuYmVnaW4oKTsKICB3aGlsZSAoIG15Q29tcFZhbEZvclNldCgqaXQsIGhpZ2hlc3QyKSApIGl0Kys7CiAgc3RkOjpjb3V0IDw8ICJcbmhpZ2hlc3QyIGlzICIgPDwgaGlnaGVzdDI7CgogIC8vLy8vL01BUC8vLy8vLy8KICAKICBNeU1hcDo6aXRlcmF0b3IgaXQyID0gbXltYXAuYmVnaW4oKTsKICBoaWdoZXN0MyA9IG15bWFwLnJiZWdpbigpLT5maXJzdDsKICB3aGlsZSAoIG15Q29tcEtleUZvck1hcCgoaXQyLT5maXJzdCksIGhpZ2hlc3QzKSApIGl0MisrOwogIHN0ZDo6Y291dCA8PCAiXG5oaWdoZXN0MyBpcyAiIDw8IGhpZ2hlc3QzOwogIAogIHN0ZDo6cGFpcjxpbnQsaW50PiBoaWdoZXN0NCA9ICpteW1hcC5yYmVnaW4oKTsKICBpdDIgPSBteW1hcC5iZWdpbigpOwogIHdoaWxlICggbXlDb21wVmFsRm9yTWFwKCooaXQyKSwgaGlnaGVzdDQpICkgaXQyKys7CiAgc3RkOjpjb3V0IDw8ICJcbmhpZ2hlc3Q0IGlzICIgPDwgaGlnaGVzdDQuc2Vjb25kOwoKICByZXR1cm4gMDsKfQ==