Unordered multiset




In this tutorial, we are going to learn about unordered multisets in the standard template library of C++ programming language. The unordered multiset is an associative container which is used to store multiple elements with the same values. In the unordered_set, storing multiple elements with the same value is not possible, the unordered_multiset is introduced to overcome this drawback. The unordered_multiset is also the same as the normal multiset but storing of elements doesn’t follow any specific order in unordered_multiset due to hashing of the elements, but the duplicate elements stored in the unordered_multiset stored contiguously.

Let’s look at some of the properties of the unordered_multiset.

The unordered_multiset implements hash tables to perform different operations.

The elements of the unordered_multiset are organized into buckets by hashing.

As the unordered_multiset implements hashing, accessing elements in the unordered_multiset takes less time.

* The basic operations implemented on the unordered_multiset take an average time of O( 1 ) and the worst case of time complexity may reach up to O( n ) in some cases.

Let’s look at the syntax of the unordered_multiset.

Unordered_multiset< data type > variable_name;

Where data type represents the data type of the elements that are stored in the unordered_multiset.

Let’s look at some of the basic methods that are implemented on the unordered_multiset.

begin(): this method returns the first element in the unordered_multiset.

end(): this method returns the last element in the unordered_multiset.

size(): returns the size of the multiset, which means the number of elements in the unordered_multiset.

See also  Lambda Expressions in c++

max_size(): this max_size function returns the maximum capacity of elements that a unordered_multiset can hold.

empty(): this method returns a boolean value whether the unordered_multiset is empty or not.

Insert(const g): this method is used to add a new element ‘g’ to the unordered_multiset.

erase(const g):  this method is used to remove the element ‘g’ from the unordered_multiset.

These are some of the basic methods that are implemented on the unordered_multiset.

Let’s look at a sample program implementing basic methods on unordered_multiset.

using namespace std;
int main() {
    unordered_multiset<int> s;
    unordered_multiset<int>::iterator it, it1;
    cout << "Elements in Unordered_multiset are:\n";
    for (it = s.begin(); it != s.end(); it++)
        cout << *it << ' ';
    it1 = s.find(80);
    cout << "\nUnordered-Multiset Elements after\nremoving one duplicate:\n";
    for (it = s.begin(); it != s.end(); it++)
        cout << *it << ' ';
    cout<<"\nSize of the unordered_multiset : "<<endl<<s.size();
    return 0;

The output of the program is.

In the above program, we have created an unordered_multiset and inserted elements into the unordered_multiset by using the insert() method. Then we created an iterator to traverse over the unordered_multiset. We found a number of elements in the unordered_multiset by using the size() function.

let’s look at the differences between the unordered_multiset and the normal multiset.

                            MULTISET                  UNORDERED_MULTISET
The multiset stores non-unique values in some specific sorted order.The unordered_multiset doesn’t follow any specific order in storing elements.
The multiset doesn’t create any bucketsThe unordered_multiset creates buckets to access the elements.
The multiset implemented by the binary search treeThe unordered_multiset is implemented by the hash tables.
multiset < datatype > multiset_name;
Syntax:Unordered_multiset< data type > unordered_multiset_name;


That’s it from this tutorial. We have learned about the unordered_multiset, its properties, basic methods implemented on the unordered_multiset, sample program and differences between a normal multiset and the unordered_multiset.

See also  prev permutation in c++

Happy Coding!

Leave a Comment

Your email address will not be published.

Ads Blocker Image Powered by Code Help Pro
Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.