排序数组并匹配其他数组

时间:2019-06-16 16:45:09

标签: c++ sorting

我正在尝试编写一个程序,在其中编写诸如姓名,分钟和秒钟之类的人的信息。我需要按时间对人进行排序。我不明白如何对分钟进行排序,也不会丢失其他数组序列的订单名称和秒数。他们只是站在那里。

#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 :(得分:0)

因此,正如一些程序员老兄所说,您必须拥有一个结构数组,而不是一个数组结构。但是即使那样,您也可能会遇到问题,因为您必须在sort函数中填写一个称为函子/比较器的论据。一个更简单的方法是,先使用pair<int, pair<string, int> z[6],然后在将所需的值输入到数组后直接使用sort(z, z+6)。这是因为sort函数可以根据对象的第一个字段(int)升序对对象数组进行排序。要访问数组中每个三元组的字段,您需要使用{{ 1}}代表第一个z[i].first字段,int代表第二个字符串字段,z[i].second.first代表最终的int字段。 请注意,比较器或函子是一种帮助定义两个不是z[i].second.secondstring的对象或任何其他标准对象之间的顺序的方法。有关更多信息,请参见以下内容:https://www.geeksforgeeks.org/functors-in-cpp/https://www.geeksforgeeks.org/sorting-a-vector-in-c/