Multiset of Vectors in C++ with Examples
Last Updated :
22 Feb, 2022
What is Multiset?
A multiset in C++ is an associative container that can hold a number of elements in a specific order. Unlike a set, a multiset can hold multiple copies of the same element.
Functions associated with a multiset:
- begin(): Returns an iterator to the first element in the multiset.
- end(): Returns an iterator to the theoretical element that follows the 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.
What is Vector?
In C++, vectors are the same as dynamic arrays with their ability to resize themself whenever required. A vector can contain homogeneous elements only. In simple words, a vector may contain elements of a particular data type only and one need to specify the data type for a vector at the time of declaration.
Functions associated with a vector:
- begin(): Returns an iterator pointing to the first element in the vector.
- end(): Returns an iterator pointing to the theoretical element that follows the last element in the vector.
- rbegin(): Returns a reverse iterator pointing to the last element in the vector (reverse beginning). It moves from last to first element.
- rend(): Returns a reverse iterator pointing to the theoretical element preceding the first element in the vector (considered as reverse end).
- cbegin(): Returns a constant iterator pointing to the first element in the vector.
- cend(): Returns a constant iterator pointing to the theoretical element that follows the last element in the vector.
- crbegin(): Returns a constant reverse iterator pointing to the last element in the vector (reverse beginning). It moves from last to the first element.
- crend(): Returns a constant reverse iterator pointing to the theoretical element preceding the first element in the vector (considered as reverse end).
Multiset of Vectors
A multiset of vectors is a multiset in which each element is a vector itself. Two vectors are considered equal if the corresponding elements of two vectors are equal. A multiset can contain more than one occurrence of the same vector along with other vectors that too in sorted order.
Syntax:
multiset<vector<dataType>> myMultiset;
Here,
dataType: A data type. It represents the type of values stored by a vector in myMultiset.
Example 1: In the below C++ program a multiset of vectorof integers is created.
C++
#include <bits/stdc++.h>
using namespace std;
void printVector(vector< int > myVector)
{
cout << "[ " ;
for ( auto element : myVector)
cout << element << ' ' ;
cout << "]\n" ;
}
void print(multiset<vector< int >> &multisetOfVectors)
{
for ( auto it = multisetOfVectors.begin();
it != multisetOfVectors.end();
it++)
{
printVector(*it);
}
}
int main()
{
multiset<vector< int >> multisetOfVectors;
vector< int > myVector1 {3, 6, 9, 10};
vector< int > myVector2 {5, 10, 11, 7};
vector< int > myVector3 {3, 6, 9, 10};
vector< int > myVector4 {5, 10, 15};
vector< int > myVector5 {50, 20, 30, 40};
multisetOfVectors.insert(myVector1);
multisetOfVectors.insert(myVector2);
multisetOfVectors.insert(myVector3);
multisetOfVectors.insert(myVector4);
multisetOfVectors.insert(myVector5);
print(multisetOfVectors);
return 0;
}
|
Output:
[ 3 6 9 10 ]
[ 3 6 9 10 ]
[ 5 10 11 7 ]
[ 5 10 15 ]
[ 50 20 30 40 ]
Explanation:
In the above output, “myVector1” and “myVector3” are the same. That is why two copies of the same vector can be seen in the output.
Example 2: In the below C++ program a multiset of vector of strings is created.
C++
#include <bits/stdc++.h>
using namespace std;
void printVector(vector<string> myVector)
{
cout << "[ " ;
for ( auto element : myVector)
cout << element << ' ' ;
cout << "]\n" ;
}
void print(multiset<vector<string>>
&multisetOfVectors)
{
for ( auto it = multisetOfVectors.begin();
it != multisetOfVectors.end();
it++)
{
printVector(*it);
}
}
int main()
{
multiset<vector<string>>
multisetOfVectors;
vector<string> myVector1
{ "GeeksforGeeks" , "GFG" };
vector<string> myVector2
{ "Python" , "Swift" , "R" };
vector<string> myVector3
{ "C" , "C++" };
vector<string> myVector4
{ "GeeksforGeeks" , "GFG" };
vector<string> myVector5
{ "PHP" , "HTML" };
multisetOfVectors.insert(myVector1);
multisetOfVectors.insert(myVector2);
multisetOfVectors.insert(myVector3);
multisetOfVectors.insert(myVector4);
multisetOfVectors.insert(myVector5);
print(multisetOfVectors);
return 0;
}
|
Output:
[ C C++ ]
[ GeeksforGeeks GFG ]
[ GeeksforGeeks GFG ]
[ PHP HTML ]
[ Python Swift R ]
Explanation:
In the above output, “myVector1” and “myVector4” are the same. That is why two copies of the same vector can be seen in the output.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...