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
);
Remarks
注意
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.
Example
// 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;
}
Input
May
Monday
Sample Output
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
Requirements
Header: <map>