Введение
В этом практическом занятии вы научитесь создавать метод пользовательской сортировки для шаблона пары и реализовывать его с использованием вектора в языке программирования C++. Предполагается, что у вас есть предварительные знания основных аспектов программирования на C++ и концепции шаблона пары. Если вы не знакомы с этими вопросами, рекомендуется ознакомиться с соответствующими туториалами перед продолжением.
Создайте пустой вектор и заполните его элементами
Начнем с объявления пустого вектора пар, а затем заполним его некоторыми элементами. В этом шаге мы создадим пустой вектор.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<pair<int, int>> v;
return 0;
}
В этом блоке кода мы просто подключили необходимые заголовочные файлы и объявили пустой вектор пар.
Заполните вектор элементами
После создания пустого вектора мы можем добавить в него элементы. Мы будем добавлять элементы, используя метод push_back класса вектора. В этом случае мы добавляем пары целых чисел в вектор.
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(1, 5));
v.push_back(make_pair(1, 3));
v.push_back(make_pair(2, 6));
v.push_back(make_pair(2, 4));
v.push_back(make_pair(5, 24));
return 0;
}
В этом блоке кода мы добавляем 5 пар в вектор v.
Создайте метод пользовательской сортировки
Для создания метода пользовательской сортировки необходимо сначала определить функцию сравнения. Функция сравнения сравнит две пары и вернет логическое значение, указывающее, меньше ли первая пара второй пары. В этом случае мы сравним первый элемент каждой пары, и если они равны, мы сравним вторые элементы пар.
bool cmp(pair<int, int> x, pair<int, int> y)
{
if (x.first!= y.first)
return x.first < y.first;
else
return x.second < y.second;
}
В этом блоке кода мы создали функцию сравнения, которая принимает две пары целых чисел в качестве аргументов и возвращает логическое значение в соответствии с нашими заданными условиями. Функция сначала сравнивает первый элемент каждой пары. Если они не равны, функция возвращает результат сравнения. Если они равны, функция сравнивает второй элемент пары и возвращает результат сравнения.
Используйте sort для сортировки вектора
В этом шаге мы отсортируем элементы в векторе на основе метода пользовательской сортировки, который мы создали на предыдущем шаге. Чтобы отсортировать вектор, нам нужно вызвать метод sort STL с вектором в качестве аргументов и передать метод пользовательской сортировки в качестве третьего аргумента.
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(1, 5));
v.push_back(make_pair(1, 3));
v.push_back(make_pair(2, 6));
v.push_back(make_pair(2, 4));
v.push_back(make_pair(5, 24));
sort(v.begin(), v.end(), cmp);
return 0;
}
В этом блоке кода мы отсортировали вектор v с использованием метода sort STL. Мы передали метод пользовательской сортировки cmp в качестве третьего параметра.
Распечатайте отсортированный вектор
В этом шаге мы выведем на печать элементы отсортированного вектора. Мы пройдем по вектору с использованием цикла for и выведем первый и второй элементы каждой пары.
int main() {
// previous code
for (auto p : v)
{
cout << p.first << " " << p.second << endl;
}
return 0;
}
В этом финальном блоке кода мы использовали цикл for-each для доступа к парам в векторе и вывода их в консоль. Теперь давайте запустим код, чтобы увидеть результаты.
Запустите код
Для запуска кода вам нужно скомпилировать его с использованием следующей команды:
g++ ~/project/main.cpp -o main &&./main
После запуска кода вы увидите отсортированные пары, напечатанные в порядке возрастания.
Полный пример кода
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair<int, int> x, pair<int, int> y)
{
if (x.first!= y.first)
return x.first < y.first;
else
return x.second < y.second;
}
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(1, 5));
v.push_back(make_pair(1, 3));
v.push_back(make_pair(2, 6));
v.push_back(make_pair(2, 4));
v.push_back(make_pair(5, 24));
sort(v.begin(), v.end(), cmp);
for (auto p : v)
{
cout << p.first << " " << p.second << endl;
}
return 0;
}
Резюме
В этом практическом занятии мы узнали, как создать метод пользовательской сортировки для шаблона пары и реализовать его с использованием вектора в C++. Мы создали пустой вектор, добавили в него элементы, создали функцию сравнения, использовали функцию sort для сортировки элементов в векторе с использованием нашего метода пользовательской сортировки и распечатали отсортированный вектор. Метод пользовательской сортировки можно использовать для сортировки пар в векторе в соответствии с некоторыми конкретными требованиями или условиями, которые мы определяем в коде.



