Рубрики

Мультисеть в C ++ Стандартная библиотека шаблонов (STL)

Мультимножества — это тип ассоциативных контейнеров, аналогичный множеству, за исключением того, что несколько элементов могут иметь одинаковые значения.

Некоторые базовые функции, связанные с мультимножеством:
begin () — возвращает итератор к первому элементу мультимножества.
end () — возвращает итератор к теоретическому элементу, который следует за последним элементом в мультимножестве
size () — возвращает количество элементов в мультимножестве
max_size () — возвращает максимальное количество элементов, которое может содержать мультимножество
empty () — Возвращает, является ли мультимножество пустым

#include <iostream>
#include <set>
#include <iterator>

  

using namespace std;

  

int main()

{

    // пустой контейнер мультимножества

    multiset <int, greater <int> > gquiz1;        

  

    // вставляем элементы в случайном порядке

    gquiz1.insert(40);

    gquiz1.insert(30);

    gquiz1.insert(60);

    gquiz1.insert(20);

    gquiz1.insert(50);

    gquiz1.insert(50); // 50 будет добавлено снова в мультимножество в отличие от набора

    gquiz1.insert(10);

  

    // печать мультимножества gquiz1

    multiset <int, greater <int> > :: iterator itr;

    cout << "\nThe multiset gquiz1 is : ";

    for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr)

    {

        cout << '\t' << *itr;

    }

    cout << endl;

  

    // присваиваем элементы из gquiz1 в gquiz2

    multiset <int> gquiz2(gquiz1.begin(), gquiz1.end());

  

    // выводим все элементы мультимножества gquiz2

    cout << "\nThe multiset gquiz2 after assign from gquiz1 is : ";

    for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr)

    {

        cout << '\t' << *itr;

    }

    cout << endl;

  

    // удаляем все элементы вплоть до элемента со значением 30 в gquiz2

    cout << "\ngquiz2 after removal of elements less than 30 : ";

    gquiz2.erase(gquiz2.begin(), gquiz2.find(30));

    for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr)

    {

        cout << '\t' << *itr;

    }

  

    // удаляем все элементы со значением 50 в gquiz2

    int num;

    num = gquiz2.erase(50);

    cout << "\ngquiz2.erase(50) : ";

    cout << num << " removed \t" ;

    for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr)

    {

        cout << '\t' << *itr;

    }

  

    cout << endl;

  

    // нижняя граница и верхняя граница для мультимножества gquiz1

    cout << "gquiz1.lower_bound(40) : " 

         << *gquiz1.lower_bound(40) << endl;

    cout << "gquiz1.upper_bound(40) : " 

         << *gquiz1.upper_bound(40) << endl;

  

    // нижняя граница и верхняя граница для мультимножества gquiz2

    cout << "gquiz2.lower_bound(40) : " 

         << *gquiz2.lower_bound(40) << endl;

    cout << "gquiz2.upper_bound(40) : " 

         << *gquiz2.upper_bound(40) << endl;

           

         return 0;

  
}

Вывод вышеуказанной программы:

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

Список функций Multiset:

  • begin () — возвращает итератор к первому элементу мультимножества.
  • end () — возвращает итератор к теоретическому элементу, который следует за последним элементом в мультимножестве.
  • size () — Возвращает количество элементов в мультимножестве.
  • max_size () — возвращает максимальное количество элементов, которое может содержать мультимножество.
  • empty () — Возвращает, является ли мультимножество пустым.
  • pair insert (const g) — добавляет новый элемент 'g' в мультимножество.
  • Вставка итератора (позиция итератора, const g) — добавляет новый элемент «g» в позицию, указанную итератором.
  • erase (позиция итератора) — удаляет элемент в позиции, указанной итератором.
  • erase (const g) — удаляет значение 'g' из мультимножества.
  • clear () — удаляет все элементы из мультимножества.
  • key_comp () / value_comp () — возвращает объект, который определяет порядок упорядочения элементов в мультимножестве (по умолчанию '<').
  • find (const g) — возвращает итератор для элемента 'g' в мультимножестве, если он найден, иначе возвращает итератор до конца.
  • count (const g) — возвращает количество совпадений с элементом 'g' в мультимножестве.
  • lower_bound (const g) — возвращает итератор для первого элемента, который эквивалентен 'g' или определенно не будет идти перед элементом 'g' в мультимножестве.
  • upper_bound (const g) — возвращает итератор для первого элемента, который эквивалентен «g» или определенно будет идти после элемента «g» в мультимножестве.
  • multiset :: swap () — эта функция используется для обмена содержимым двух мультимножеств, но наборы должны быть одного типа, хотя размеры могут отличаться.
  • multiset :: operator = — Этот оператор используется для назначения нового содержимого контейнеру путем замены существующего содержимого.
  • multiset :: emplace () — эта функция используется для вставки нового элемента в контейнер мультимножества.
  • multiset equal_range () — возвращает итератор пар. Пара относится к диапазону, который включает все элементы в контейнере, которые имеют ключ, эквивалентный k.
  • multiset :: emplace_hint () — Вставляет новый элемент в мультимножество.
  • multiset :: rbegin () — возвращает обратный итератор, указывающий на последний элемент в мультимножественном контейнере.
  • multiset :: rend () — возвращает обратный итератор, указывающий на теоретический элемент непосредственно перед первым элементом в мультимножественном контейнере.
  • multiset :: cbegin () — возвращает постоянный итератор, указывающий на первый элемент в контейнере.
  • multiset :: cend () — возвращает постоянный итератор, указывающий на позицию после последнего элемента в контейнере.
  • multiset :: crbegin () — возвращает постоянный обратный итератор, указывающий на последний элемент в контейнере.
  • multiset :: crend () — возвращает постоянный обратный итератор, указывающий на позицию перед первым элементом в контейнере.
  • multiset :: get_allocator () — возвращает копию объекта распределителя, связанного с мультимножеством.

Последние статьи о Мультисете

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Мультисеть в C ++ Стандартная библиотека шаблонов (STL)

0.00 (0%) 0 votes