Введение
В этом практическом занятии вы научитесь сортировать неупорядоченное множество на языке программирования C++. Вы узнаете о основных концепциях неупорядоченного множества и его реализации.
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом практическом занятии вы научитесь сортировать неупорядоченное множество на языке программирования C++. Вы узнаете о основных концепциях неупорядоченного множества и его реализации.
Для начала откройте терминал и введите следующую команду, чтобы перейти в директорию project
:
cd project
Теперь создайте новый файл с именем main.cpp
в директории project
. В этом файле будет содержаться код для сортировки неупорядоченного множества.
touch main.cpp
Скопируйте и вставьте следующий код в файл main.cpp
.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(int x, int y)
{
if (x > y)
return true;
else
return false;
}
// Функция для вывода элементов неупорядоченного множества с использованием итератора
void show(unordered_set<int> s)
{
// Объявление итератора для перебора неупорядоченного множества
unordered_set<int>::iterator i;
for (i = s.begin(); i!= s.end(); i++)
{
cout << *i << " "; // Доступ к элементам неупорядоченного множества с использованием * так как i хранит адрес каждого элемента
}
cout << endl;
}
int main()
{
cout << "\n\nДобро пожаловать в LabEx :-)\n\n\n";
cout << " ===== Программа для демонстрации сортировки неупорядоченного множества на CPP ===== \n\n\n\n";
cout << " *** Неупорядоченное множество автоматически удаляет дублирующие элементы и сохраняет случайный порядок. *** \n\n";
cout << " *** Этот случайный порядок зависит от хэш-функции, которая используется внутри. *** \n\n";
cout << " *** Неупорядоченное множество можно отсортировать, скопировав его элементы в Vector. *** \n\n";
// Объявление неупорядоченного множества (неупорядоченное множество целых чисел)
unordered_set<int> s;
// Заполнение элементов с использованием метода insert()
cout << "\n\nЗаполнение неупорядоченного множества целыми числами в случайном порядке. " // В отличие от Set, это не автоматически сортируется
s.insert(5);
s.insert(39);
s.insert(64);
s.insert(82);
s.insert(35);
s.insert(54);
cout << "\n\nЭлементы неупорядоченного множества перед сортировкой: ";
show(s);
// Объявление вектора и инициализация его элементами неупорядоченного множества
vector<int> v(s.begin(), s.end());
// Сортировка элементов вектора в порядке убывания с использованием пользовательского компаратора
sort(v.begin(), v.end(), cmp);
cout << "\n\nЭлементы неупорядоченного множества после сортировки в порядке убывания с использованием пользовательского метода сортировки: \n";
// Объявление итератора для перебора вектора
vector<int>::iterator it;
for (it = v.begin(); it!= v.end(); it++)
{
cout << *it << " "; // Доступ к элементам вектора с использованием * так как i хранит адрес каждого элемента
}
cout << "\n\n\n";
return 0;
}
Для компиляции программы и создания исполняемого файла выполните следующую команду в терминале:
g++ main.cpp -o main
Эта команда создаст исполняемый файл с именем main
.
Для запуска кода выполните следующую команду:
./main
В терминале вы должны увидеть вывод программы.
Скопируйте окончательный код в файл ~/project/main.cpp
:
// ~/project/main.cpp
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(int x, int y)
{
if (x > y)
return true;
else
return false;
}
// Функция для вывода элементов неупорядоченного множества с использованием итератора
void show(unordered_set<int> s)
{
// Объявление итератора для перебора неупорядоченного множества
unordered_set<int>::iterator i;
for (i = s.begin(); i!= s.end(); i++)
{
cout << *i << " "; // Доступ к элементам неупорядоченного множества с использованием * так как i хранит адрес каждого элемента
}
cout << endl;
}
int main()
{
cout << "\n\nДобро пожаловать в LabEx :-)\n\n\n";
cout << " ===== Программа для демонстрации сортировки неупорядоченного множества на CPP ===== \n\n\n\n";
cout << " *** Неупорядоченное множество автоматически удаляет дублирующие элементы и сохраняет случайный порядок. *** \n\n";
cout << " *** Этот случайный порядок зависит от хэш-функции, которая используется внутри. *** \n\n";
cout << " *** Неупорядоченное множество можно отсортировать, скопировав его элементы в Vector. *** \n\n";
// Объявление неупорядоченного множества (неупорядоченное множество целых чисел)
unordered_set<int> s;
// Заполнение элементов с использованием метода insert()
cout << "\n\nЗаполнение неупорядоченного множества целыми числами в случайном порядке. " // В отличие от Set, это не автоматически сортируется
s.insert(5);
s.insert(39);
s.insert(64);
s.insert(82);
s.insert(35);
s.insert(54);
cout << "\n\nЭлементы неупорядоченного множества перед сортировкой: ";
show(s);
// Объявление вектора и инициализация его элементами неупорядоченного множества
vector<int> v(s.begin(), s.end());
// Сортировка элементов вектора в порядке убывания с использованием пользовательского компаратора
sort(v.begin(), v.end(), cmp);
cout << "\n\nЭлементы неупорядоченного множества после сортировки в порядке убывания с использованием пользовательского метода сортировки: \n";
// Объявление итератора для перебора вектора
vector<int>::iterator it;
for (it = v.begin(); it!= v.end(); it++)
{
cout << *it << " "; // Доступ к элементам вектора с использованием * так как i хранит адрес каждого элемента
}
cout << "\n\n\n";
return 0;
}
В этой лабораторной работе вы узнали, как сортировать неупорядоченное множество на языке программирования C++. Вы узнали основные концепции неупорядоченного множества и его реализацию с использованием вектора и метода sort
из STL. Также вы узнали, как объявить неупорядоченное множество и как заполнить его элементами.