#include <iostream>
#include <map>
#include <iterator>
using namespace std;
int main()
{
multimap <int, int> multimap1; // empty multimap container
// insert elements in random order
multimap1.insert(pair <int, int> (1, 40));
multimap1.insert(pair <int, int> (2, 30));
multimap1.insert(pair <int, int> (3, 60));
multimap1.insert(pair <int, int> (4, 20));
multimap1.insert(pair <int, int> (5, 50));
multimap1.insert(pair <int, int> (6, 50));
multimap1.insert(pair <int, int> (6, 10));
// printing multimap multimap1
multimap <int, int> :: iterator itr;
cout << "\nThe multimap multimap1 is : \n";
cout << "\tKEY\tELEMENT\n";
for (itr = multimap1.begin(); itr != multimap1.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
cout << endl;
// assigning the elements from multimap1 to multimap2
multimap <int, int> multimap2(multimap1.begin(),multimap1.end());
// print all elements of the multimap multimap2
cout << "\nThe multimap2 after assign from multimap1 is : \n";
cout << "\tKEY\tELEMENT\n";
for (itr = multimap2.begin(); itr != multimap2.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
cout << endl;
// remove all elements up to element with value 30 in multimap2
cout << "\nmultimap2 after removal of elements less than key=3 : \n";
cout << "\tKEY\tELEMENT\n";
multimap2.erase(multimap2.begin(), multimap2.find(3));
for (itr = multimap2.begin(); itr != multimap2.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
// remove all elements with key = 4
int num;
num = multimap2.erase(4);
cout << "\nmultimap2.erase(4) : ";
cout << num << " removed \n" ;
cout << "\tKEY\tELEMENT\n";
for (itr = multimap2.begin(); itr != multimap2.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
cout << endl;
//lower bound and upper bound for multimap multimap1 key = 5
cout << "multimap1.lower_bound(5) : " << "\tKEY = ";
cout << multimap1.lower_bound(5)->first << '\t';
cout << "\tELEMENT = " << multimap1.lower_bound(5)->second << endl;
cout << "multimap1.upper_bound(5) : " << "\tKEY = ";
cout << multimap1.upper_bound(5)->first << '\t';
cout << "\tELEMENT = " << multimap1.upper_bound(5)->second << endl;
return 0;
}
#include <map>
#include <iterator>
using namespace std;
int main()
{
multimap <int, int> multimap1; // empty multimap container
// insert elements in random order
multimap1.insert(pair <int, int> (1, 40));
multimap1.insert(pair <int, int> (2, 30));
multimap1.insert(pair <int, int> (3, 60));
multimap1.insert(pair <int, int> (4, 20));
multimap1.insert(pair <int, int> (5, 50));
multimap1.insert(pair <int, int> (6, 50));
multimap1.insert(pair <int, int> (6, 10));
// printing multimap multimap1
multimap <int, int> :: iterator itr;
cout << "\nThe multimap multimap1 is : \n";
cout << "\tKEY\tELEMENT\n";
for (itr = multimap1.begin(); itr != multimap1.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
cout << endl;
// assigning the elements from multimap1 to multimap2
multimap <int, int> multimap2(multimap1.begin(),multimap1.end());
// print all elements of the multimap multimap2
cout << "\nThe multimap2 after assign from multimap1 is : \n";
cout << "\tKEY\tELEMENT\n";
for (itr = multimap2.begin(); itr != multimap2.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
cout << endl;
// remove all elements up to element with value 30 in multimap2
cout << "\nmultimap2 after removal of elements less than key=3 : \n";
cout << "\tKEY\tELEMENT\n";
multimap2.erase(multimap2.begin(), multimap2.find(3));
for (itr = multimap2.begin(); itr != multimap2.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
// remove all elements with key = 4
int num;
num = multimap2.erase(4);
cout << "\nmultimap2.erase(4) : ";
cout << num << " removed \n" ;
cout << "\tKEY\tELEMENT\n";
for (itr = multimap2.begin(); itr != multimap2.end(); ++itr)
{
cout << '\t' << itr->first
<< '\t' << itr->second << '\n';
}
cout << endl;
//lower bound and upper bound for multimap multimap1 key = 5
cout << "multimap1.lower_bound(5) : " << "\tKEY = ";
cout << multimap1.lower_bound(5)->first << '\t';
cout << "\tELEMENT = " << multimap1.lower_bound(5)->second << endl;
cout << "multimap1.upper_bound(5) : " << "\tKEY = ";
cout << multimap1.upper_bound(5)->first << '\t';
cout << "\tELEMENT = " << multimap1.upper_bound(5)->second << endl;
return 0;
}