сортировка массива и сопоставление с другим массивом - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь написать программу, в которой я пишу информацию о таких людях, как: имя, минуты и секунды. Мне нужно отсортировать людей по времени. Я не могу понять, как отсортировать минуты и не потерять другой порядок следования массивов - имя и секунда. они просто стоят на месте.

#include <iostream>          
#include <algorithm>
#include <string>
using namespace std;

struct people{
int min[6], sec[6];
string name[6];
};
int main()
{
 int temp;
 people z;
for(int i=0; i<6; i++)
    {
   cin>>z.name[i];
   cin>>z.min[i];
   cin>>z.sec[i];
 }
sort(z.min,z.min+6);
cout<<endl;

for(int i=0; i<6; i++)
    {
    cout<<z.name[i]<<" "<<z.min[i]<<" "<<z.sec[i]<<endl;
 }
    return 0;
}
/*Input for example is :

John 6 15  
Liza 9 59 
Michael 19 45 
Kira 2 37 
Thomas 5 41 
Justas 13 24 
/*

1 Ответ

0 голосов
/ 08 июля 2019

Итак, как сказал один программист, чувак, у вас должен быть массив структур, а не структура массивов.Но даже после этого вы, вероятно, столкнетесь с проблемами, поскольку вам придется заполнить аргумент под названием функтор / компаратор в функции sort.гораздо более простой способ сделать это, если вы использовали pair<int, pair<string, int> z[6], а затем непосредственно использовали sort(z, z+6) после ввода требуемых значений в ваш массив.Это связано с тем, что функция сортировки может сортировать массив парных объектов на основе первого поля (int) объекта в порядке возрастания. Чтобы получить доступ к полям каждого триплета в массиве, вам нужно использовать z[i].first дляпервое int поле, z[i].second.first для второго строкового поля и z[i].second.second для последнего целевого поля.Обратите внимание, что компаратор или функтор - это метод, помогающий определить порядок между двумя объектами, которые не являются string, int или любыми другими стандартными объектами.Смотрите их для получения дополнительной информации: https://www.geeksforgeeks.org/functors-in-cpp/ и https://www.geeksforgeeks.org/sorting-a-vector-in-c/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...