Метод erase() для множества STL в C++

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

Введение

В этом практическом занятии вы узнаете о работе Multiset и его реализации на языке программирования C++. Вы конкретно изучите, как использовать метод erase() в Set или Multiset для удаления элементов.

Создайте файл с кодом на C++

Используйте любой текстовый редактор, чтобы создать новый файл с кодом на C++, названный main.cpp, в директории проекта ~/project.

cd ~/project
touch main.cpp

Напишите код на C++

Введите следующий код в файл main.cpp. Комментарии поясняют код.

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

using namespace std;

// Функция для вывода элементов множества с использованием итератора
void show(multiset<int> s)
{
    // Объявление итератора для итерирования по множеству
    multiset<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; // Доступ к элементам множества с использованием *, так как i хранит адрес каждого элемента
    }

    cout << endl;
}

int main()
{
    cout << "\n\nДобро пожаловать в лабораторию по методу erase() для STL Set\n\n\n";
    cout << " =====  Программа для демонстрации работы Multiset на CPP  ===== \n\n\n\n";

    cout << "*** Multiset похож на set, за исключением того, что в нем могут быть несколько элементов с одинаковыми значениями. *** \n\n";

    // Объявление множества (множество целых чисел)
    multiset<int> s;

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

    s.insert(5);
    s.insert(39);
    s.insert(5);
    s.insert(82);
    s.insert(39);
    s.insert(54);

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

    cout << "\n\nЭлементы Multiset: ";
    show(s);

    multiset<int>::iterator it;

    // Удаление всех элементов множества, которые меньше 54
    s.erase(s.begin(), s.find(54));

    cout << "\n\nПосле удаления всех элементов, которые меньше 54, Multiset становится: ";

    for (it = s.begin(); it!= s.end(); it++)
    {
        cout << " " << *it;
    }

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

    return 0;
}

Компилируйте и запускайте код на C++

В терминале скомпилируйте файл main.cpp с помощью команды g++, а затем запустите скомпилированный файл.

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

Вы должны увидеть следующий вывод:

Добро пожаловать в лабораторию по методу erase() для STL Set


 =====  Программа для демонстрации работы Multiset на CPP  =====



*** Multiset похож на set, за исключением того, что в нем могут быть несколько элементов с одинаковыми значениями. ***


Заполнение Multiset целыми числами в случайном порядке.
Количество элементов в Multiset: 6

Элементы Multiset: 5  5  39  39  54  82

После удаления всех элементов, которые меньше 54, Multiset становится:  54  82

Проверьте код

Потратьте время на проверку кода и убедитесь, что вы понимаете, как метод erase() используется для удаления элементов из Multiset.

//Удаление всех элементов множества, которые меньше 54
s.erase(s.begin(), s.find(54));

В этом коде используется метод erase(), чтобы удалить все элементы в Multiset начиная с начала и до, но не включая элемент со значением 54. Таким образом, результирующее Multiset содержит только значения 54 и 82.

Резюме

В этой лаборатории вы узнали, как использовать метод erase() в C++ Set или Multiset для удаления элементов. Также вы узнали, как итерироваться по множеству с использованием итератора и выводить элементы с использованием метода show(). Это полезно при отладке или проверке содержимого сложных структур данных, таких как Sets и Multisets.