Class Runtimestringcmp{public:enum Cmp_mode{normal,nocase,}; RUNTIMESTRINGCMP (Cmp_mode mod=normal): Mode (mod) {}~runtimestringcmp () {}static bool Nocase_compare (char Char1,char CHAR2) {return ToUpper (CHAR1) < ToUpper (CHAR2);} BOOL Operator () (const string& STR1, const string& str2) {if (mode = = Normal) {return str1 < str2;} Else{return Lexicographical_compare (Str1.begin (), Str1.end (), Str2.begin (), Str2.end (), nocase_compare);}} Private:const cmp_mode mode;}; void Printmap (const map<string, String, runtimestringcmp>& mapobj) {typedef map<string, String, Runtimestringcmp>::const_iterator mapiter;for (Mapiter iter = Mapobj.begin (); ITER! = Mapobj.end (); iter++) {cout < < Iter->first << "<< iter->second << Endl;}} int main () {map<string, string, runtimestringcmp> stringmap;string tempstring1;string tempstring2;while (cin > > tempString1) {cin >> tempstring2;stringmap[tempstring1] = tempString2;} Printmap (Stringmap); Cin.clear (); RUNTIMESTRINGCMP CMP (runtimestringcmp::nocase); map<string, String, runtimestringcmp> STRINGMAP2 (CMP); while ( CIN >> tempString1) {cin >> tempstring2;stringmap2[tempstring1] = tempString2;} Printmap (STRINGMAP2); System ("pause"); return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Apply map,string and specify sorting criteria at execution time