#include <iostream>
#include <set>
#include <string>
using namespace std;
class state {
string name;
string capital;
public :
state( ) { name = capital = "" ; }
state( string s)
{
name = s;
capital = "" ;
}
state( string s, string c)
{
name = s;
capital = c;
}
// オリジナルのソース
// string get_name() { return name; }
// string get_capital() { return capital; }
string get_name( ) const { return name; }
string get_capital( ) const { return capital; }
} ;
bool operator< ( state a, state b)
{
return a.get_name ( ) < b.get_name ( ) ;
}
// オリジナルのソース
// ostream& operator<<(ostream& s, state& o)
ostream& operator<< ( ostream& s, const state& o)
{
s << o.get_name ( ) << "'s capital is " ;
s << o.get_capital ( ) << "." << endl;
return s;
}
int main( )
{
set< state> states;
states.insert ( state( "Illinois" , "Springfield" ) ) ;
states.insert ( state( "Wisconsin" , "Madison" ) ) ;
states.insert ( state( "Missouri" , "Jefferson City" ) ) ;
states.insert ( state( "California" , "Sacramento" ) ) ;
states.insert ( state( "Nevada" , "Carson City" ) ) ;
states.insert ( state( "Arkansas" , "Little Rock" ) ) ;
states.insert ( state( "Alaska" , "Juneau" ) ) ;
states.insert ( state( "West Virginia" , "Charleston" ) ) ;
set< state> :: iterator p = states.begin ( ) ;
do {
cout << * p;
p++ ;
} while ( p ! = states.end ( ) ) ;
cout << endl;
cout << "Looking for Wisconsin." << endl;
p = states.find ( state( "Wisconsin" ) ) ;
if ( p ! = states.end ( ) ) {
cout << "Found." << endl;
cout << * p;
} else {
cout << "State not in list." << endl;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3Mgc3RhdGUgewogICAgc3RyaW5nIG5hbWU7CiAgICBzdHJpbmcgY2FwaXRhbDsKCnB1YmxpYzoKICAgIHN0YXRlKCkgeyBuYW1lID0gY2FwaXRhbCA9ICIiOyB9CiAgICBzdGF0ZShzdHJpbmcgcykKICAgIHsKICAgICAgICBuYW1lID0gczsKICAgICAgICBjYXBpdGFsID0gIiI7CiAgICB9CiAgICBzdGF0ZShzdHJpbmcgcywgc3RyaW5nIGMpCiAgICB7CiAgICAgICAgbmFtZSA9IHM7CiAgICAgICAgY2FwaXRhbCA9IGM7CiAgICB9CiAgICAvLyDjgqrjg6rjgrjjg4rjg6vjga7jgr3jg7zjgrkKICAgIC8vIHN0cmluZyBnZXRfbmFtZSgpIHsgcmV0dXJuIG5hbWU7IH0KICAgIC8vIHN0cmluZyBnZXRfY2FwaXRhbCgpIHsgcmV0dXJuIGNhcGl0YWw7IH0KICAgIHN0cmluZyBnZXRfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7IH0KICAgIHN0cmluZyBnZXRfY2FwaXRhbCgpIGNvbnN0IHsgcmV0dXJuIGNhcGl0YWw7IH0KfTsKCmJvb2wgb3BlcmF0b3I8KHN0YXRlIGEsIHN0YXRlIGIpCnsKICAgIHJldHVybiBhLmdldF9uYW1lKCkgPCBiLmdldF9uYW1lKCk7Cn0KCi8vIOOCquODquOCuOODiuODq+OBruOCveODvOOCuQovLyBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHMsIHN0YXRlJiBvKQpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHMsIGNvbnN0IHN0YXRlJiBvKQp7CiAgICBzIDw8IG8uZ2V0X25hbWUoKSA8PCAiJ3MgY2FwaXRhbCBpcyAiOwogICAgcyA8PCBvLmdldF9jYXBpdGFsKCkgPDwgIi4iIDw8IGVuZGw7CgogICAgcmV0dXJuIHM7Cn0KCmludCBtYWluKCkKewogICAgc2V0PHN0YXRlPiBzdGF0ZXM7CgogICAgc3RhdGVzLmluc2VydChzdGF0ZSgiSWxsaW5vaXMiLCAiU3ByaW5nZmllbGQiKSk7CiAgICBzdGF0ZXMuaW5zZXJ0KHN0YXRlKCJXaXNjb25zaW4iLCAiTWFkaXNvbiIpKTsKICAgIHN0YXRlcy5pbnNlcnQoc3RhdGUoIk1pc3NvdXJpIiwgIkplZmZlcnNvbiBDaXR5IikpOwogICAgc3RhdGVzLmluc2VydChzdGF0ZSgiQ2FsaWZvcm5pYSIsICJTYWNyYW1lbnRvIikpOwogICAgc3RhdGVzLmluc2VydChzdGF0ZSgiTmV2YWRhIiwgIkNhcnNvbiBDaXR5IikpOwogICAgc3RhdGVzLmluc2VydChzdGF0ZSgiQXJrYW5zYXMiLCAiTGl0dGxlIFJvY2siKSk7CiAgICBzdGF0ZXMuaW5zZXJ0KHN0YXRlKCJBbGFza2EiLCAiSnVuZWF1IikpOwogICAgc3RhdGVzLmluc2VydChzdGF0ZSgiV2VzdCBWaXJnaW5pYSIsICJDaGFybGVzdG9uIikpOwoKICAgIHNldDxzdGF0ZT46Oml0ZXJhdG9yIHAgPSBzdGF0ZXMuYmVnaW4oKTsKICAgIGRvIHsKICAgICAgICBjb3V0IDw8ICpwOwogICAgICAgIHArKzsKICAgIH0gd2hpbGUgKHAgIT0gc3RhdGVzLmVuZCgpKTsKICAgIGNvdXQgPDwgZW5kbDsKCiAgICBjb3V0IDw8ICJMb29raW5nIGZvciBXaXNjb25zaW4uIiA8PCBlbmRsOwogICAgcCA9IHN0YXRlcy5maW5kKHN0YXRlKCJXaXNjb25zaW4iKSk7CiAgICBpZiAocCAhPSBzdGF0ZXMuZW5kKCkpIHsKICAgICAgICBjb3V0IDw8ICJGb3VuZC4iIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAqcDsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dCA8PCAiU3RhdGUgbm90IGluIGxpc3QuIiA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==