Associate words with the STL map

vegaseat 1 Tallied Votes 155 Views Share

Another experiment with the Standard Template Library (STL). This time we are taking a look at map. Map is a Sorted Pair Associative Container (a mouthful). The pair is -- const Key, Data --, where Key has to be unique. It is Key that is sorted. In this code sample a simple word association is shown. The map is loaded, displayed, and searched.

// experimenting with the STL map<const Key, Data>
// const Key is unique, no two elements can have the same key
// building a simple associated word search 
// a Dev-C++ tested console application by  vegaseat  29nov2004

#include <iostream>
#include <map>        // map, pair

using namespace std;  // std::cout, std::cin

int main()
  char thing[30];           // key word
  char farbe[30];           // associated color
  map<string,string> sM;    // map<const Key, Data>
  map<string,string>::iterator iter; // points to elements
  // load the map<string,string> with things and color
  // could be loaded from a data file too 

  // list the things (key words)
  cout << "things to choose from:\n";
  for(iter = sM.begin(); iter != sM.end(); iter++)
    cout<< iter->first << endl;      
  cout << "Enter a thing: ";
  cin >> thing;
  // find the specified thing (unique key word)
  // point to the map's end if find fails
  iter = sM.find(thing);  // point to it
  if (iter != sM.end()) 
    cout << "the " << iter->first << " is " << iter->second << endl;
    cout << "thing " << thing << " not found!" << endl;

  // you can look for the associated word (not unique)
  cout << "all the red things:\n";
  for(iter = sM.begin(); iter != sM.end(); iter++)
    if (iter->second == "red")
      cout << iter->first << " is " << iter->second << endl;    
  cin.get();   // trap return
  cin.get();   // wait	
  return 0;
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.