#include <iostream>
#include <set>
#include <iterator>
using namespace std;
int main()
{
// empty multiset container
multiset <int, less <int> > multiset1;
// insert elements in random order
multiset1.insert(40);
multiset1.insert(30);
multiset1.insert(60);
multiset1.insert(20);
multiset1.insert(50);
multiset1.insert(50); // 50 will be added again to the multiset unlike set
multiset1.insert(10);
// printing multiset multiset1
multiset <int, less <int> > :: iterator itr;
cout << "\nThe multiset multiset1 is : ";
for (itr = multiset1.begin(); itr != multiset1.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
// assigning the elements from multiset1 to multiset2
multiset <int> multiset2(multiset1.begin(), multiset1.end());
// print all elements of the multiset multiset2
cout << "\nThe multiset multiset2 after assign from multiset1 is : ";
for (itr = multiset2.begin(); itr != multiset2.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
// remove all elements up to element with value 30 in multiset2
cout << "\nmultiset2 after removal of elements less than 30 : ";
multiset2.erase(multiset2.begin(), multiset2.find(30));
for (itr = multiset2.begin(); itr != multiset2.end(); ++itr)
{
cout << '\t' << *itr;
}
// remove all elements with value 50 in multiset2
int num;
num = multiset2.erase(50);
cout << "\nmultiset2.erase(50) : ";
cout << num << " removed \t" ;
for (itr = multiset2.begin(); itr != multiset2.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
//lower bound and upper bound for multiset multiset1
cout << "multiset1.lower_bound(40) : "
<< *multiset1.lower_bound(40) << endl;
cout << "multiset1.upper_bound(40) : "
<< *multiset1.upper_bound(40) << endl;
//lower bound and upper bound for multiset multiset2
cout << "multiset2.lower_bound(40) : "
<< *multiset2.lower_bound(40) << endl;
cout << "multiset2.upper_bound(40) : "
<< *multiset2.upper_bound(40) << endl;
return 0;
}
#include <set>
#include <iterator>
using namespace std;
int main()
{
// empty multiset container
multiset <int, less <int> > multiset1;
// insert elements in random order
multiset1.insert(40);
multiset1.insert(30);
multiset1.insert(60);
multiset1.insert(20);
multiset1.insert(50);
multiset1.insert(50); // 50 will be added again to the multiset unlike set
multiset1.insert(10);
// printing multiset multiset1
multiset <int, less <int> > :: iterator itr;
cout << "\nThe multiset multiset1 is : ";
for (itr = multiset1.begin(); itr != multiset1.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
// assigning the elements from multiset1 to multiset2
multiset <int> multiset2(multiset1.begin(), multiset1.end());
// print all elements of the multiset multiset2
cout << "\nThe multiset multiset2 after assign from multiset1 is : ";
for (itr = multiset2.begin(); itr != multiset2.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
// remove all elements up to element with value 30 in multiset2
cout << "\nmultiset2 after removal of elements less than 30 : ";
multiset2.erase(multiset2.begin(), multiset2.find(30));
for (itr = multiset2.begin(); itr != multiset2.end(); ++itr)
{
cout << '\t' << *itr;
}
// remove all elements with value 50 in multiset2
int num;
num = multiset2.erase(50);
cout << "\nmultiset2.erase(50) : ";
cout << num << " removed \t" ;
for (itr = multiset2.begin(); itr != multiset2.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
//lower bound and upper bound for multiset multiset1
cout << "multiset1.lower_bound(40) : "
<< *multiset1.lower_bound(40) << endl;
cout << "multiset1.upper_bound(40) : "
<< *multiset1.upper_bound(40) << endl;
//lower bound and upper bound for multiset multiset2
cout << "multiset2.lower_bound(40) : "
<< *multiset2.lower_bound(40) << endl;
cout << "multiset2.upper_bound(40) : "
<< *multiset2.upper_bound(40) << endl;
return 0;
}