Multiset in C++ Standard Template Library (STL)

Multisets are a type of associative containers similar to set, with an exception that multiple elements can have same values.
Some Basic Functions associated with multiset: 
begin() – Returns an iterator to the first element in the multiset 
end() – Returns an iterator to the theoretical element that follows last element in the multiset 
size() – Returns the number of elements in the multiset 
max_size() – Returns the maximum number of elements that the multiset can hold 
empty() – Returns whether the multiset is empty

Implementation: 

filter_none

edit
close

play_arrow

link
brightness_4
code

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

Output
The multiset gquiz1 is : 
60 50 50 40 30 20 10 

The multiset gquiz2 
after assign from gquiz1 is : 
10 20 30 40 50 50 60 

gquiz2 after removal 
of elements less than 30 : 
30 40 50 50 60 
gquiz2.erase(50) : 
2 removed 
30 40 60 

gquiz1.lower_bound(40) : 
40
gquiz1.upper_bound(40) : 
30
gquiz2.lower_bound(40) : 
40
gquiz2.upper_bound(40) : 
60

 Removing Element from multiset which have same value

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    multiset<int> a;
    a.insert(10);
    a.insert(10);
    a.insert(10);
 
    // it will give output 3
    cout << a.count(10) << endl;
 
    // removing single instance from multiset
   
    // it will remove only one value of
    // 10 from multiset
    a.erase(a.find(10));
    
    // it will give output 2
    cout << a.count(10) << endl;
 
    // removing all instance of element from multiset
    // it will remove all instance of value 10
    a.erase(10);
   
    // it will give output 0 because all
    // instance of value is removed from
    // mulitset
    cout << a.count(10)
         << endl;
 
    return 0;
}
chevron_right

Output

3
2
0

List of functions of Multiset: 

Recent articles on Multiset
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
 

Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.





Improved By : samridhzor23

Article Tags :
C++
Practice Tags :