INTRODUCTION
UNORDERED MULTISET in Cpp
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.
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.
#include<bits/stdc++.h>
using namespace std;
int main() {
unordered_multiset<int> s;
s.insert(10);
s.insert(20);
s.insert(30);
s.insert(40);
s.insert(60);
s.insert(80);
s.insert(70);
s.insert(50);
s.insert(80);
s.insert(80);
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);
s.erase(it1);
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 buckets | The unordered_multiset creates buckets to access the elements. |
The multiset implemented by the binary search tree | The unordered_multiset is implemented by the hash tables. |
Syntax: multiset < datatype > multiset_name; | Syntax:Unordered_multiset< data type > unordered_multiset_name; |
CONCLUSION
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.
Happy Coding!