Mega Code Archive

 
Categories / C++ Tutorial / Map Multimap
 

Multiple map

/* The following code example is taken from the book  * "The C++ Standard Library - A Tutorial and Reference"  * by Nicolai M. Josuttis, Addison-Wesley, 1999  *  * (C) Copyright Nicolai M. Josuttis 1999.  * Permission to copy, use, modify, sell and distribute this software  * is granted provided this copyright notice appears in all copies.  * This software is provided "as is" without express or implied  * warranty, and with no claim as to its suitability for any purpose.  */ #include <iostream> #include <map> #include <string> #include <iomanip> using namespace std; int main() {     // define multimap type as string/string dictionary     typedef multimap<string,string> StrStrMMap;     // create empty dictionary     StrStrMMap dict;     // insert some elements in random order     dict.insert(make_pair("day","Tag"));     dict.insert(make_pair("strange","fremd"));     dict.insert(make_pair("car","Auto"));     dict.insert(make_pair("smart","elegant"));     dict.insert(make_pair("trait","Merkmal"));     dict.insert(make_pair("strange","seltsam"));     dict.insert(make_pair("smart","raffiniert"));     dict.insert(make_pair("smart","klug"));     dict.insert(make_pair("clever","raffiniert"));     // print all elements     StrStrMMap::iterator pos;     cout.setf (ios::left, ios::adjustfield);     cout << ' ' << setw(10) << "english "          << "german " << endl;     cout << setfill('-') << setw(20) << ""          << setfill(' ') << endl;     for (pos = dict.begin(); pos != dict.end(); ++pos) {         cout << ' ' << setw(10) << pos->first.c_str()              << pos->second << endl;     }     cout << endl;     // print all values for key "smart"     string word("smart");     cout << word << ": " << endl;     for (pos = dict.lower_bound(word);          pos != dict.upper_bound(word); ++pos) {             cout << "    " << pos->second << endl;     }     // print all keys for value "raffiniert"     word = ("raffiniert");     cout << word << ": " << endl;     for (pos = dict.begin(); pos != dict.end(); ++pos) {         if (pos->second == word) {             cout << "    " << pos->first << endl;         }     } } english german -------------------- car Auto clever raffiniert day Tag smart elegant smart raffiniert smart klug strange fremd strange seltsam trait Merkmal smart: elegant raffiniert klug raffiniert: clever smart