C++/Map Multimap/map display

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Change all value in a map and output all elements

<source lang="cpp">

/* 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.
*/
  1. include <iostream>
  2. include <map>
  3. include <string>

using namespace std; int main() {

   /* create map / associative array
    * - keys are strings
    * - values are floats
    */
   typedef map<string,float> StringFloatMap;
   StringFloatMap stocks;      // create empty container
   // insert some elements
   stocks["BASF"] = 369.50;
   stocks["VW"] = 413.50;
   stocks["Daimler"] = 819.00;
   stocks["BMW"] = 834.00;
   stocks["Siemens"] = 842.20;
   // print all elements
   StringFloatMap::iterator pos;
   for (pos = stocks.begin(); pos != stocks.end(); ++pos) {
       cout << "stock: " << pos->first << "\t"
            << "price: " << pos->second << endl;
   }
   cout << endl;
   // boom (all prices doubled)
   for (pos = stocks.begin(); pos != stocks.end(); ++pos) {
       pos->second *= 2;
   }
   // print all elements
   for (pos = stocks.begin(); pos != stocks.end(); ++pos) {
       cout << "stock: " << pos->first << "\t"
            << "price: " << pos->second << endl;
   }
   cout << endl;

} /* stock: BASF price: 369.5 stock: BMW price: 834 stock: Daimler price: 819 stock: Siemens price: 842.2 stock: VW price: 413.5 stock: BASF price: 739 stock: BMW price: 1668 stock: Daimler price: 1638 stock: Siemens price: 1684.4 stock: VW price: 827

*/        
 </source>