Задача
Для списка пар pair<string,int>
, где первое число — имя пользователя, второе — сумма набранных балов, с использованием heap
реализовать вывод на консоль всех имён пользователей в отсортированном
по убыванию баллов порядке.
Есть программа, но сортирует она не до конца:
#include <vector>
#include <cstdlib>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
typedef pair<string, int> P;
struct comparator
{
bool operator()(const P &i, const P &j)
{
return i.second > j.second;
}
};
class Pair
{
vector<P> Students;
public:
Pair() {};
void Add()
{
Students = { { "Vasya", 10 }, { "Misha", 20 }, { "Anton", 30 }, { "Kolya", 40 }, { "Nikita", 50 }, { "Sasha", 60 } };
}
void Sort()
{
make_heap(Students.begin(), Students.end(), comparator());
for (const P &i : Students)
cout << i.first << ' ' << i.second << endl;
cout << "\n";
sort_heap(Students.begin(), Students.end());
for (const P &i : Students)
cout << i.first << ' ' << i.second << endl;
}
};
int main()
{
Pair Students;
Students.Add();
Students.Sort();
system("pause");
}
Определять какие то структуры для данной задачи является излишной тратой времени и источником ошибок. Я не внимательно изучил, что вы написали, так как можно просто изменить условие компаратора и затем просто создать кучу:
typedef pair<string, int> P;
struct comparator
{
bool operator()(const P &i, const P &j)
{
return i.second < j.second;
}
};
int main()
{
vector<P> Students = { { "Vasya", 10 }, { "Misha", 20 }, { "Anton", 30 }, { "Kolya", 40 }, { "Nikita", 50 }, { "Sasha", 60 } };
make_heap(Students.begin(), Students.end(), comparator());
for (const P &i : Students)
cout << i.first << ' ' << i.second << endl;
cout << "\n";
return 0;
}
Я использовал ваш код, доводя до состояния "попроще"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
"error: redeclaration of 'std::ifstream file" Компилятор выдаёт эту ошибку когда пытаюсь прочитать 2-й файл
Здравствуйте! У меня возникла следующая проблема, не могу подобрать контейнер для хранения переменных и их значенийК слову, map подходил почти...