нужно отсортировать список студентов по приоритету в c++.
Список содержится в контейнере multiset.
Формат записываемой в файл информации и выводимой на экран:
«статус ФИО (г. р.) группа зачетка», где статус–одно из {«студент», «староста группы», «староста курса» }(текстовое отображение значения поля).
статус является приоритетом (студент<староста группы<староста потока), как отсортировать?
Другие языки программирования и технологии
Программирование, C++, курсовая работа по C++ на тему список студентов
К ассоциативным контейнерам после их инициализации невозможно применить метод сортировки. Это противоречит их внутренней структуре. Сортировку нужно определять на стадии параметризации контейнера.
1. Определить в структуре оператор стандартной сортировки по умолчанию.
1. Определить бинарный функциональный объект для сравнения элементов в соответствие с заданием.
2. Создать контейнер multiset, дополнительно параметризированный функциональным объектом сортировки.
Например,
#include <iostream>
#include <string>
#include <set>
using namespace std;
struct Person {
string pn;
string name;
friend bool operator<(const Person& a, const Person& b) {
return a.pn < b.pn;
}
};
struct compare {
bool operator()(const Person& a, const Person& b) {
if (a.name == b.name) return a.pn < b.pn;
return a.name < b.name;
}
};
int main() {
initializer_list<Person> pl{
{ "0001"s, "Ivanov Olrg Sergeevich"s },
{ "0002"s, "Gavrilov Ivan Stepanovich"s },
{ "0003"s, "Ivanov Zahar Alekseevich"s },
{ "0004"s, "Andreev Victor Egorovich"s },
{ "0005"s, "Gavrilov Ivan Stepanovich"s },
{ "0006"s, "Sannikova Svetlana Viktorovna"s },
{ "0002"s, "Ivanov Olrg Alekseevich"s }
};
multiset<Person> persons{ pl };
for (const auto person : persons) {
cout << person.pn << ". " << person.name << '\n';
}
cout.put('\n');
multiset<Person, compare> persons_name{ pl };
for (const auto person : persons_name) {
cout << person.pn << ". " << person.name << '\n';
}
cout.put('\n');
system("pause");
}
1. Определить в структуре оператор стандартной сортировки по умолчанию.
1. Определить бинарный функциональный объект для сравнения элементов в соответствие с заданием.
2. Создать контейнер multiset, дополнительно параметризированный функциональным объектом сортировки.
Например,
#include <iostream>
#include <string>
#include <set>
using namespace std;
struct Person {
string pn;
string name;
friend bool operator<(const Person& a, const Person& b) {
return a.pn < b.pn;
}
};
struct compare {
bool operator()(const Person& a, const Person& b) {
if (a.name == b.name) return a.pn < b.pn;
return a.name < b.name;
}
};
int main() {
initializer_list<Person> pl{
{ "0001"s, "Ivanov Olrg Sergeevich"s },
{ "0002"s, "Gavrilov Ivan Stepanovich"s },
{ "0003"s, "Ivanov Zahar Alekseevich"s },
{ "0004"s, "Andreev Victor Egorovich"s },
{ "0005"s, "Gavrilov Ivan Stepanovich"s },
{ "0006"s, "Sannikova Svetlana Viktorovna"s },
{ "0002"s, "Ivanov Olrg Alekseevich"s }
};
multiset<Person> persons{ pl };
for (const auto person : persons) {
cout << person.pn << ". " << person.name << '\n';
}
cout.put('\n');
multiset<Person, compare> persons_name{ pl };
for (const auto person : persons_name) {
cout << person.pn << ". " << person.name << '\n';
}
cout.put('\n');
system("pause");
}
Похожие вопросы
- Стоит ли изучать язык программирования C++ ?И какое преимущество этого языка? Где он мне пригодится ?
- Основные различия языка программирования C# от С++.
- Пожалуйста помогите разобраться с даним кодом C++. Тема : Односвязание списки
- Язык программирования C.
- Язык программирования C#
- Вопрос по языку программирования C# (СиШарп) (очень простой вопрос)
- Сложно ли будет изучить язык программирования C#?
- C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся
- Я учусь в 5 классе и хочу научится языку программирования C++.
- Программирование и удалённая работа