#include <vector>
#include <map> //for std::pair
#include <iostream>
#include <algorithm> //for std::rotate
typedef std::pair<int,int> entry;
typedef std::vector<entry> storage;
void print( const char* msg, const storage& obj )
{
std::cout<<msg<<std::endl;
for(auto i : obj)
{
std::cout << i.first << "," << i.second << std::endl;
}
}
void lookup(int key, const storage& obj)
{
for(auto i : obj)
{
if( i.first == key )
{
std::cout<<"\t"<<key<<"=>"<<i.second<<std::endl;
return;
}
}
std::cout<<key<<"not found"<<std::endl;
}
int main()
{
storage mymap = {entry(122,1),entry(12,2),entry(3,45)};
print("Before rotation", mymap);
lookup(12,mymap);
std::rotate(mymap.begin(),mymap.begin()+1,mymap.end());
print("After one rotation", mymap);
lookup(12,mymap);
std::rotate(mymap.begin(),mymap.begin()+1,mymap.end());
print("After one more rotation", mymap);
lookup(12,mymap);
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1hcD4gLy9mb3Igc3RkOjpwYWlyCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4gLy9mb3Igc3RkOjpyb3RhdGUKCnR5cGVkZWYgc3RkOjpwYWlyPGludCxpbnQ+IGVudHJ5Owp0eXBlZGVmIHN0ZDo6dmVjdG9yPGVudHJ5PiBzdG9yYWdlOwoKCnZvaWQgcHJpbnQoIGNvbnN0IGNoYXIqIG1zZywgY29uc3Qgc3RvcmFnZSYgb2JqICkKewogICAgc3RkOjpjb3V0PDxtc2c8PHN0ZDo6ZW5kbDsKICAgIGZvcihhdXRvIGkgOiBvYmopCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGkuZmlyc3QgPDwgIiwiIDw8IGkuc2Vjb25kIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfQoKdm9pZCBsb29rdXAoaW50IGtleSwgY29uc3Qgc3RvcmFnZSYgb2JqKQp7CiAgICBmb3IoYXV0byBpIDogb2JqKQogICAgewogICAgICAgIGlmKCBpLmZpcnN0ID09IGtleSApCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNvdXQ8PCJcdCI8PGtleTw8Ij0+Ijw8aS5zZWNvbmQ8PHN0ZDo6ZW5kbDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIHN0ZDo6Y291dDw8a2V5PDwibm90IGZvdW5kIjw8c3RkOjplbmRsOwp9CgppbnQgbWFpbigpCnsKICAgIHN0b3JhZ2UgbXltYXAgPSB7ZW50cnkoMTIyLDEpLGVudHJ5KDEyLDIpLGVudHJ5KDMsNDUpfTsKICAgIHByaW50KCJCZWZvcmUgcm90YXRpb24iLCBteW1hcCk7CiAgICBsb29rdXAoMTIsbXltYXApOwogICAgc3RkOjpyb3RhdGUobXltYXAuYmVnaW4oKSxteW1hcC5iZWdpbigpKzEsbXltYXAuZW5kKCkpOwogICAgcHJpbnQoIkFmdGVyIG9uZSByb3RhdGlvbiIsIG15bWFwKTsKICAgIGxvb2t1cCgxMixteW1hcCk7CiAgICBzdGQ6OnJvdGF0ZShteW1hcC5iZWdpbigpLG15bWFwLmJlZ2luKCkrMSxteW1hcC5lbmQoKSk7CiAgICBwcmludCgiQWZ0ZXIgb25lIG1vcmUgcm90YXRpb24iLCBteW1hcCk7CiAgICBsb29rdXAoMTIsbXltYXApOwogICAgcmV0dXJuIDA7Cn0=
Before rotation
122,1
12,2
3,45
12=>2
After one rotation
12,2
3,45
122,1
12=>2
After one more rotation
3,45
122,1
12,2
12=>2