Рубрики

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

Multimap аналогичен map с тем дополнением, что несколько элементов могут иметь одинаковые ключи. Вместо того чтобы каждый элемент был уникальным, в этом случае пара ключ-значение и сопоставленное значение должны быть уникальными.

Некоторые основные функции, связанные с мультикартой:

  • begin () — возвращает итератор к первому элементу в мультикарте
  • end () — возвращает итератор к теоретическому элементу, который следует за последним элементом в мультикарте
  • size () — возвращает количество элементов в мультикарте
  • max_size () — возвращает максимальное количество элементов, которое может содержать мультикарта
  • empty () — Возвращает, является ли мультикарта пустой
  • pair <int, int> insert (keyvalue, multimapvalue ) — добавляет новый элемент в мультикарту

Реализация C ++ для иллюстрации вышеуказанных функций

#include <iostream>
#include <map>
#include <iterator>

  

using namespace std;

  

int main()

{

    multimap <int, int> gquiz1;        // пустой контейнер с несколькими картами

  

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

    gquiz1.insert(pair <int, int> (1, 40));

    gquiz1.insert(pair <int, int> (2, 30));

    gquiz1.insert(pair <int, int> (3, 60));

    gquiz1.insert(pair <int, int> (4, 20));

    gquiz1.insert(pair <int, int> (5, 50));

    gquiz1.insert(pair <int, int> (6, 50));

    gquiz1.insert(pair <int, int> (6, 10));

  

    // печать мультикарты gquiz1

    multimap <int, int> :: iterator itr;

    cout << "\nThe multimap gquiz1 is : \n";

    cout << "\tKEY\tELEMENT\n";

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

    {

        cout  <<  '\t' << itr->first

              <<  '\t' << itr->second << '\n';

    }

    cout << endl;

  

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

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

  

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

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

    cout << "\tKEY\tELEMENT\n";

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

    {

        cout << '\t' << itr->first

             << '\t' << itr->second << '\n';

    }

    cout << endl;

  

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

    cout << "\ngquiz2 after removal of elements less than key=3 : \n";

    cout << "\tKEY\tELEMENT\n";

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

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

    {

        cout << '\t' << itr->first

             << '\t' << itr->second << '\n';

    }

  

    // удаляем все элементы с ключом = 4

    int num;

    num = gquiz2.erase(4);

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

    cout << num << " removed \n" ;

    cout << "\tKEY\tELEMENT\n";

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

    {

        cout << '\t' << itr->first

             << '\t' << itr->second << '\n';

    }

  

    cout << endl;

  

    // нижняя граница и верхняя граница для мультикарты gquiz1 key = 5

    cout << "gquiz1.lower_bound(5) : " << "\tKEY = ";

    cout << gquiz1.lower_bound(5)->first << '\t';

    cout << "\tELEMENT = " << gquiz1.lower_bound(5)->second << endl;

    cout << "gquiz1.upper_bound(5) : " << "\tKEY = ";

    cout << gquiz1.upper_bound(5)->first << '\t';

    cout << "\tELEMENT = " << gquiz1.upper_bound(5)->second << endl;

  

    return 0;

  
}

Выход:

The multimap gquiz1 is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    4    20
    5    50
    6    50
    6    10


The multimap gquiz2 after assign from gquiz1 is : 
    KEY    ELEMENT
    1    40
    2    30
    3    60
    4    20
    5    50
    6    50
    6    10


gquiz2 after removal of elements less than key=3 : 
    KEY    ELEMENT
    3    60
    4    20
    5    50
    6    50
    6    10

gquiz2.erase(4) : 1 removed 
    KEY    ELEMENT
    3    60
    5    50
    6    50
    6    10

gquiz1.lower_bound(5) :     KEY = 5        ELEMENT = 50
gquiz1.upper_bound(5) :     KEY = 6        ELEMENT = 50

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

  • multimap :: operator = в C ++ STL — используется для назначения нового содержимого в контейнер путем замены существующего содержимого.
  • multimap :: crbegin () и multimap :: crend () в C ++ STLcrbegin () возвращает постоянный обратный итератор, ссылающийся на последний элемент в многокарточном контейнере. crend () возвращает постоянный обратный итератор, указывающий на теоретический элемент перед первым элементом в мультикарте.
  • multimap :: emplace_hint () в C ++ STL — вставляет ключ и его элемент в контейнер мультикарты с заданной подсказкой.
  • Функция multimap clear () в C ++ STL — удаляет все элементы из мультикарты.
  • Функция multimap empty () в C ++. STL — Возвращает, является ли мультикарта пустой.
  • multimap maxsize () в C ++ STL — возвращает максимальное количество элементов, которое может содержать контейнер с несколькими картами.
  • Функция multimap value_comp () в C ++ STL — возвращает объект, который определяет порядок упорядочения элементов в мультикарте ('
  • multimap rend в C ++ STL — возвращает обратный итератор, указывающий на теоретический элемент, предшествующий первому элементу контейнера с несколькими картами.
  • multimap :: cbegin () и multimap :: cend () в C ++. STLcbegin () возвращает постоянный итератор, ссылающийся на первый элемент в многокарточном контейнере. cend () возвращает постоянный итератор, указывающий на теоретический элемент, который следует за последним элементом в мультикарте.
  • multimap :: swap () в C ++ STL — Поменять содержимое одной мультикарты на другую мультикарту того же типа и размера.
  • multimap rbegin в C ++ STL — возвращает итератор, указывающий на последний элемент контейнера.
  • Функция multimap size () в C ++. STL — Возвращает количество элементов в мультикарте.
  • multimap :: emplace () в C ++ STL — вставляет ключ и его элемент в контейнер с несколькими картами.
  • multimap :: begin () и multimap :: end () в C ++ STLbegin () возвращает итератор, ссылающийся на первый элемент в контейнере multimap. end () возвращает итератор к теоретическому элементу, который следует за последним элементом в мультикарте.
  • Функция multimap upper_bound () в C ++ STL — возвращает итератор для первого элемента, который эквивалентен многозначному значению со значением ключа «g» или определенно будет идти после элемента со значением ключа «g» в мультикарте.
  • multimap :: count () в C ++ STL — возвращает количество совпадений с элементом со значением ключа «g» в мультикарте.
  • multimap :: erase () в C ++ STL — Удаляет значение ключа из мультикарты.
  • multimap :: find () в C ++ STL — Возвращает итератор для элемента со значением ключа 'g' в мультикарте, если он найден, иначе возвращает итератор до конца.
  • multimap equal_range () в C ++ STL — возвращает итератор пар. Пара относится к границам диапазона, который включает все элементы в контейнере, которые имеют ключ, эквивалентный k.
  • multimap insert () в C ++ STL — используется для вставки элементов в контейнер с несколькими картами.
  • Функция multimap lower_bound () в C ++ STL — возвращает итератор для первого элемента, который эквивалентен многозначному значению со значением ключа «g» или определенно не будет идти перед элементом со значением ключа «g» в мультикарте.
  • multimap key_comp () в C ++ STL — возвращает объект, который определяет порядок упорядочения элементов в мультикарте ('

Последние статьи о Multimap

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

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

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

0.00 (0%) 0 votes