Что такое Multiset?
Мультимножество представляет собой ассоциативный контейнер, который может содержать ряд элементов в определенном порядке. В отличие от набора мультимножество может содержать несколько экземпляров одного и того же элемента.
Некоторые функции, связанные с мультимножеством:
- begin (): возвращает итератор к первому элементу мультимножества.
- end ():возвращает итератор к теоретическому элементу, который следует за последним элементом в мультимножестве.
- size (): возвращает количество элементов в мультимножестве.
- max_size (): возвращает максимальное количество элементов, которое может содержать мультимножество.
- empty (): возвращает, является ли мультимножество пустым.
Что такое Pair?
Заголовок утилиты в C ++ предоставляет нам контейнер пар. Пара состоит из двух элементов данных или объектов.
- Первый элемент обозначается как «первый», а второй элемент — как «второй», и порядок фиксируется (первый, второй).
- Пара используется для объединения двух значений, которые могут различаться по типу. Пара позволяет хранить два разнородных объекта как единое целое.
- Пары можно назначать, копировать и сравнивать. Массив объектов, размещенных на карте или hash_map, по умолчанию имеет тип «пара», в котором все «первые» элементы являются уникальными ключами, связанными со своими «вторыми» объектами значений.
- Чтобы получить доступ к элементам, мы используем имя переменной, за которым следует оператор точка, за которым следует ключевое слово first или second.
Как получить доступ к паре?
Для доступа к элементам пары используйте оператор точки (.).
Синтаксис:
auto fistElement = myPair.first;
auto fistElement = myPair.second;
Множество пар
Мультимножество пар — это мультимножество, в котором каждый элемент сам является парой. Две пары считаются равными, если равны соответствующие первый и второй элементы пары. Теперь, если есть необходимость хранить более одной копии пары вместе с другими элементами, тоже в определенном порядке, в таких случаях может пригодиться мультимножество пар.
Синтаксис:
multiset<pair<dataType1, dataType2>> myMultiset;
Here,
dataType1 and dataType2 can be similar or dismilar data types.
Пример 1: Ниже представлена программа на C ++, демонстрирующая работу мультимножества пар, имеющих целочисленные значения.
// C++ program to illustrate the
// implementation of multiset of
// pairs
#include <bits/stdc++.h>
using
namespace
std;
// Function to print multiset
// elements
void
print(multiset<pair<
int
,
int
>> &multisetOfPairs)
{
// Iterating over multiset of
// pairs elements
for
(
auto
cuurentPair : multisetOfPairs)
{
// Each element is a tuple itself
pair<
int
,
int
> pr = cuurentPair;
// Printing pair elements
cout <<
"[ "
<< pr.first <<
' '
<<
pr.second <<
" ]"
<<
'\n'
;
}
}
// Driver code
int
main()
{
// Declaring a multiset of tuples
multiset<pair<
int
,
int
>> multisetOfPairs;
// Initializing a pair
pair<
int
,
int
> pair1;
pair1 = make_pair(1, 2);
// Initializing a pair
pair<
int
,
int
> pair2;
pair2 = make_pair(3, 4);
// Initializing another pair
pair<
int
,
int
> pair3;
pair3 = make_pair(5, 6);
// Initializing another pair
pair<
int
,
int
> pair4;
pair4 = make_pair(7, 8);
// Initializing another pair
pair<
int
,
int
> pair5;
pair5 = make_pair(9, 10);
// Inserting into multiset
multisetOfPairs.insert(pair1);
multisetOfPairs.insert(pair2);
multisetOfPairs.insert(pair3);
multisetOfPairs.insert(pair4);
multisetOfPairs.insert(pair5);
// Calling print function
print(multisetOfPairs);
return
0;
}
Вывод:
[ 1 2 ]
[ 3 4 ]
[ 5 6 ]
[ 7 8 ]
[ 9 10 ]
Объяснение:
В приведенном выше выводе элементы упорядочены попарно в мультимножестве пар.
Пример 2: Ниже представлена программа на C ++, демонстрирующая работу мультимножества пар, имеющих строковые значения.
// C++ program to illustrate the
// implementation of multiset of
// pairs
#include <bits/stdc++.h>
using
namespace
std;
// Function to print multiset elements
void
print(multiset<pair<string,
string>> &multisetOfPairs)
{
// Iterating over multiset of pairs elements
for
(
auto
currentPair : multisetOfPairs)
{
// Each element is a pair itself
pair<string, string> pr = currentPair;
// Printing pair elements
cout <<
"[ "
<< pr.first <<
' '
<<
pr.second <<
" ]"
<<
'\n'
;
}
}
// Driver code
int
main()
{
// Declaring a multiset of pairs
multiset<pair<string,
string>> multisetOfPairs;
// Initializing a pair
pair<string, string> pair1;
pair1 = make_pair(
"GeeksforGeeks"
,
"GFG"
);
// Initializing a pair
pair<string, string> pair2;
pair2 = make_pair(
"Swift"
,
"Python"
);
// Initializing another pair
pair<string, string> pair3;
pair3 = make_pair(
"C++"
,
"C"
);
// Initializing another pair
pair<string, string> pair4;
pair4 = make_pair(
"PHP"
,
"HTML"
);
// Initializing another pair
pair<string, string> pair5;
pair5 = make_pair(
"Javascript"
,
"CSS"
);
// Inserting into multiset
multisetOfPairs.insert(pair1);
multisetOfPairs.insert(pair2);
multisetOfPairs.insert(pair3);
multisetOfPairs.insert(pair4);
multisetOfPairs.insert(pair5);
// Calling print function
print(multisetOfPairs);
return
0;
}
Вывод:
[ C++ C ]
[ GeeksforGeeks GFG ]
[ Javascript CSS ]
[ PHP HTML ]
[ Swift Python ]
Объяснение:
В приведенном выше выводе элементы упорядочены попарно в мультимножестве пар.