Удаление элементов из ассоциативного массива (map) в C++

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы научитесь использовать метод erase() для удаления элементов из ассоциативного массива (map) в C++ STL. Ассоциативный массив - это контейнер, который хранит данные в парах "ключ-значение".


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp/BasicsGroup -.-> cpp/variables("Variables") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") subgraph Lab Skills cpp/variables -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} cpp/operators -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} cpp/conditions -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} cpp/class_methods -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} cpp/output -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} cpp/files -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} cpp/standard_containers -.-> lab-96229{{"Удаление элементов из ассоциативного массива (map) в C++"}} end

Создание ассоциативного массива (map)

Создайте экземпляр ассоциативного массива в файле main.cpp, добавив эти заголовочные файлы в начало файла:

#include <iostream>
#include <bits/stdc++.h>

Объявите ассоциативный массив с целочисленными ключами и значениями, как показано ниже:

map<int, int> m;

Вставка данных в ассоциативный массив (map)

Вставьте случайные данные в ассоциативный массив с использованием метода insert(). Метод make_pair() можно использовать для присвоения пар ключ-значение ассоциативному массиву.

m.insert(make_pair(3, 9));
m.insert(make_pair(2, 4));
m.insert(make_pair(5, 25));
m.insert(make_pair(9, 81));
m.insert(make_pair(1, 1));

Удаление элемента из ассоциативного массива (map)

Используйте метод erase(x) для удаления элемента из ассоциативного массива с ключом, имеющим значение x. Если значение не существует, метод возвращает 0, в противном случае - 1.

int j = m.erase(5);

if(j == 1) {
    cout << "\nЭлемент ассоциативного массива с ключом 5 удален.";
} else {
    cout << "\nЭлемент ассоциативного массива с ключом 5 не существует.";
}

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

int k = m.erase(6);

if(k!= 0){
    cout << "\n\nЭлемент ассоциативного массива с ключом 6 удален\n\n";
} else {
    cout << "\n\nЭлемент ассоциативного массива с ключом 6 не существует.";
}

Запуск кода

Для запуска кода перейдите в директорию, содержащую файл main.cpp, в терминале и введите следующие команды для компиляции и выполнения:

$ g++ main.cpp -o main
$./main

Полный код

Ниже приведен полный код для вашего riferimento:

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    cout << "\n\nДобро пожаловать в LabEx :-) \n\n\n";
    cout << "===== Программа для демонстрации работы метода erase() в ассоциативном массиве (Map) (Часть 1), на CPP ==== \n\n\n";

    cout << "*** Метод erase(x) удаляет элемент ассоциативного массива с ключом x и возвращает 1, если элемент найден, иначе возвращает 0. *** \n\n";

    // Объявление ассоциативного массива (ассоциативный массив с ключом и значением, оба - целые числа)
    map<int, int> m;

    // Заполнение элементов с использованием метода insert()
    cout << "\n\nЗаполнение ассоциативного массива парами ключ-значение целых чисел в случайном порядке."; //Ассоциативный массив автоматически хранит их в порядке возрастания ключей

    //make_pair() используется для вставки пары ключ-значение в ассоциативный массив
    m.insert(make_pair(3, 9));
    m.insert(make_pair(2, 4));
    m.insert(make_pair(5, 25));
    m.insert(make_pair(9, 81));
    m.insert(make_pair(1, 1));

    cout << "\n\nКоличество элементов в ассоциативном массиве: " << m.size();

    cout << "\n\nЭлементы ассоциативного массива m: ";

    map<int, int>::iterator i;
    int j = 0;

    for (i = m.begin(); i!= m.end(); i++)
    {
        cout << "( " << i->first << ", " << i->second << " ) ";
    }

    // Поиск элемента ассоциативного массива с ключом 5
    j = m.erase(5);

    if (j == 1)
    {
        cout << "\n\nЭлемент ассоциативного массива с ключом 5 удален.";
    }
    else
    {
        cout << "\n\nЭлемент ассоциативного массива с ключом 5 не существует.";
    }

    cout << "\n\nКоличество элементов в ассоциативном массиве становится: " << m.size();

    cout << "\n\nЭлементы ассоциативного массива m после операции удаления:  ";

    j = 0;

    for (i = m.begin(); i!= m.end(); i++)
    {
        cout << "( " << i->first << ", " << i->second << " ) ";
    }

    j = m.erase(6);

    if (i!= m.end())
    {
        cout << "\n\nЭлемент ассоциативного массива с ключом 6 удален\n\n";
    }

    else
    {
        cout << "\n\nЭлемент ассоциативного массива с ключом 6 не существует.";
    }

    cout << "\n\n\n";

    return 0;
}

Резюме

В этом практическом занятии вы начали с создания ассоциативного массива (map), а затем заполнили его данными. Затем вы узнали, как использовать метод erase() для удаления элементов из ассоциативного массива по их ключам. Надеемся, что приведенные выше примеры помогут вам понять, как удалять элементы из ассоциативного массива в C++ STL.