Сводка карты C++

искусственный интеллект

содержание

вводить

Общие функции

Экземпляр функции

Вставьте элементы и определите, успешна ли вставка

карта маршрута

найти элемент

удалить элемент


вводить

map — это ассоциативный контейнер STL, обеспечивающий однозначное хэширование.

  • Первый можно назвать ключом, и каждый ключ может появиться на карте только один раз;
  • Второе можно назвать значением ключевого слова;
    Карта реализована в шаблонном (универсальном) виде и может хранить любые типы данных, включая пользовательские типы данных. Карта в основном используется для отображения данных один к одному.Внутренняя реализация карты строит красно-черное дерево, которое имеет функцию автоматической сортировки данных. Все данные внутри карты упорядочены, как показано ниже:
  • https://images2015.cnblogs.com/blog/542815/201702/542815-20170213225443957-1135271755.png

Общие функции

begin() возвращает итератор в начало карты
clear() удаляет все элементы
count() возвращает количество вхождений указанного элемента

empty() возвращает true, если карта пуста
end() возвращает итератор, указывающий на конец карты

equal_range() возвращает пару специальных элементов итератора

стереть() удаляет элемент
find() находит элемент
insert() вставляет элемент
max_size() возвращает максимальное количество элементов, которое может быть размещено
size() возвращает количество элементов на карте
swap() Поменять местами две карты

get_allocator() возвращает конфигуратор карты
key_comp() Возвращает функцию, которая сравнивает ключ элемента
lower_bound() Возвращает значение ключа >= первая позиция данного элемента
max_size() Возвращает максимальное количество элементов, которое может быть размещено
rbegin() возвращает обратный итератор в конец карты
rend() возвращает обратный итератор в начало карты
upper_bound() возвращает значение ключа> первую позицию данного элемента
value_comp() Возвращает функцию, которая сравнивает значение элемента

Экземпляр функции

Вставьте элементы и определите, успешна ли вставка

#include <map>

#include <iostream>

using namespace std;

 

int main()

{

 

    map<int, string> myMap;

// Первый — использовать функцию вставки для вставки пары

    myMap.insert(pair<int,string>(01, "aa"));

// Второй — использовать функцию вставки для вставки данных value_type

    myMap.insert(map<int, string>::value_type(02, "bb"));

// Третий способ вставки в "массив"

    myMap[33] = "cc";

// Создаем определение, возвращаем парный объект, проверяем успешность добавления

    pair<map<int, string>::iterator, bool> Insert_Pair;

    Insert_Pair = myMap.insert(map<int, string>::value_type(33, "cc"));

    if (!Insert_Pair.second)

        cout << "Error insert new element" << endl;

    cout << "\n";

    return 0;

}

карта маршрута

#include <iostream>

#include <map>

using namespace std;

 

int main() {

    map<int, int> m;

    for (int i = 0; i < 5; i++) {

        m[i] = i * i;

    }

//Первый метод обхода, итератор+пока

    map<int, int>::iterator iter;

    iter = m.begin();

    while (iter != m.end()) {

        cout << iter->first << "-" << iter->second << endl;

        iter++;

    }

//Второй метод обхода, for+iterator

    for (iter = m.begin(); iter != m.end(); iter++) {

        cout << iter->first << "-" << iter->second << endl;

    }

//Третий метод обхода for+auto

    for (auto &it : m) {

        cout << it.first << "-" << it.second << endl;

    }

    return 0;

}

найти элемент

#include <iostream>

#include <map>

using namespace std;

 

int main() {

    map<int, int> m;

    for (int i = 0; i < 5; i++) {

        m[i] = i * i;

    }

   

    auto it = m.find(3);

    if (it != m.end())

    {

int ss = (*it).second;//или int ss=it->second

        cout << ss << endl;

    }

    return 0;

}

удалить элемент

#include <iostream>

#include <map>

using namespace std;

 

int main() {

    map<int, int> m;

    for (int i = 0; i < 5; i++) {

        m[i] = i * i;

    }

//Удалить элемент, на который указывает ключ bfff

    m.erase(4);

//Удаляем элемент, на который указывает ключ итератора

    map<int, int>::iterator key = m.find(2);

    if (key != m.end())

    {

        m.erase(key);

    }

// удаляем все элементы

    m.erase(m.begin(), m.end());

    return 0;

}

Подсчитайте количество вхождений ключа

#include <iostream>

#include <map>

using namespace std;

int main() {

    map<int, int> m;

    for (int i = 0; i < 5; i++) {

        m[i] = i * i;

    }

    int c = m.count(1);

    cout << c << endl;

    return 0;

}