Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
abs
Expand Minimize

map::max_size, map::clear, map::erase, and map::size

Illustrates how to use the map::max_size, map::clear, map::erase, and map::size Standard Template Library (STL) functions in Visual C++.

size_type max_size( ) const; 
void clear( ) const; 
bool empty( ) const; 
iterator erase( 
   iterator First, 
   iterator Last 
); 
size_type size( ) const; 
A::reference operator[](         // A is the allocator 
   const Key& Key 
);  
iterator map::begin( ); 
iterator map::end( ); 
iterator map::find( 
   const Key& Key 
);

Note Note

The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

The following sample creates a map of strings to ints and fills it first with a map of month names to month numbers, and then empties and refills it with a map of weekday names to corresponding ints.

// map_max_size_etc_sample.cpp
// compile with: /EHsc
//
// Functions:    iterator map::max_size();
//               void clear() const;
//               bool empty() const;
//               iterator erase(iterator first, iterator last);
//               size_type size() const;
//               A::reference operator[](const Key& key);
//               iterator map::begin();
//               iterator map::end();
//               iterator map::find(const Key& key);

#pragma warning(disable:4786)

#include <iostream>
#include <string>
#include <map>

using namespace std ;

typedef map<string, int> STRING2INT;

int main()
{
   STRING2INT MyMap;
   STRING2INT::iterator MyIterator;
   string MyBuffer;

   // print the maximum number of <key,data> pairs that MyMap can hold
   cout << "MyMap is capable of holding " << MyMap.max_size()
        << " <string,int> pairs" << endl;

   if (!MyMap.empty())
      cout << "MyMap has " << MyMap.size() << " entries" << endl;
   else
      cout << "MyMap is empty" << endl;
   
   cout << "Entering new entries in MyMap" << endl;
   // Fill in MyMap with the months of the year, mapped to their number
   // January - 1, February - 2, etc. using operator[].
   MyMap["January"] = 1;
   MyMap["February"] = 2;
   MyMap["March"] = 3;
   MyMap["April"] = 4;
   MyMap["May"] = 5;
   MyMap["June"] = 6;
   MyMap["July"] = 7;
   MyMap["August"] = 8;
   MyMap["September"] = 9;
   MyMap["October"] = 10;
   MyMap["November"] = 11;
   MyMap["December"] = 12;

   if (!MyMap.empty())
      cout << "MyMap has " << MyMap.size() << " entries" << endl;
   else
      cout << "MyMap is empty" << endl;

   // Ask the user for a month of the year and print the number
   // that corresponds to the month entered
   MyIterator = MyMap.end();
   while (MyIterator == MyMap.end())
   {
      cout << endl << "Enter a Month: ";
      cin >> MyBuffer;
      if ((MyIterator = MyMap.find(MyBuffer)) != MyMap.end())
         cout << (*MyIterator).first << " is Month Number "
              << (*MyIterator).second << endl;
      else
         cout << "Enter a Valid Month (example: March)" << endl;
   }

   // empty MyMap - note that clear simply calls erase(begin(),end());
   MyMap.clear();

   if (!MyMap.empty())
      cout << "MyMap has " << MyMap.size() << " entries" << endl;
   else
      cout << "MyMap is empty" << endl;
   
   cout << "Entering new entries in MyMap" << endl;
   // Fill MyMap with the days of the week, each mapped to an int
   MyMap["Monday"] = 1;
   MyMap["Tuesday"] = 2;
   MyMap["Wednesday"] = 3;
   MyMap["Thursday"] = 4;
   MyMap["Friday"] = 5;
   MyMap["Saturday"] = 6;
   MyMap["Sunday"] = 7;

   if (!MyMap.empty())
      cout << "MyMap has " << MyMap.size() << " entries" << endl;
   else
      cout << "MyMap is empty" << endl;

   // Ask the user for a day of the week and print the number
   // that corresponds to the day entered
   MyIterator = MyMap.end();
   while (MyIterator == MyMap.end())
   {
      cout << endl << "Enter a Day of the Week: ";
      cin >> MyBuffer;
      if ((MyIterator = MyMap.find(MyBuffer)) != MyMap.end())
         cout << (*MyIterator).first << " is Day Number "
              << (*MyIterator).second << endl;
      else
         cout << "Enter a Valid Day of the Week(example: Monday)" << endl;
   }

   // Now clear MyMap again - this time using erase instead of clear
   MyMap.erase(MyMap.begin(), MyMap.end());

   if (!MyMap.empty())
      cout << "MyMap has " << MyMap.size() << " entries" << endl;
   else
      cout << "MyMap is empty" << endl;
}

May
Monday

MyMap is capable of holding 134217727 <string,int> pairs
MyMap is empty
Entering new entries in MyMap
MyMap has 12 entries

Enter a Month: May
May is Month Number 5
MyMap is empty
Entering new entries in MyMap
MyMap has 7 entries

Enter a Day of the Week: Monday
Monday is Day Number 1
MyMap is empty

Header: <map>

Show:
© 2015 Microsoft