📅  最后修改于: 2023-12-03 15:24:27.117000             🧑  作者: Mango
在C/C++中,可以使用 struct
来表示日期,并使用标准库提供的排序函数对日期数组进行排序。
首先需要定义一个日期结构体,该结构体包含年、月、日三个成员变量,如下所示:
struct Date {
int year;
int month;
int day;
};
对日期数组进行排序需要实现一个比较函数(比较两个日期的大小关系)。可以使用 <
运算符来比较两个日期的大小关系,如下所示:
bool cmp(const Date& a, const Date& b) {
if (a.year != b.year) {
return a.year < b.year;
}
if (a.month != b.month) {
return a.month < b.month;
}
return a.day < b.day;
}
上述比较函数先比较年,如果年相同再比较月,如果月相同再比较日。
使用标准库提供的排序函数 sort()
进行排序,排序函数的参数包括日期数组的起始地址、结束地址和比较函数,如下所示:
Date dateArr[] = {{2019, 8, 21}, {2020, 6, 18}, {2018, 12, 1}, {2019, 1, 25}};
int len = sizeof(dateArr) / sizeof(Date);
sort(dateArr, dateArr+len, cmp);
#include <iostream>
#include <algorithm>
using namespace std;
struct Date {
int year;
int month;
int day;
};
bool cmp(const Date& a, const Date& b) {
if (a.year != b.year) {
return a.year < b.year;
}
if (a.month != b.month) {
return a.month < b.month;
}
return a.day < b.day;
}
int main() {
Date dateArr[] = {{2019, 8, 21}, {2020, 6, 18}, {2018, 12, 1}, {2019, 1, 25}};
int len = sizeof(dateArr) / sizeof(Date);
sort(dateArr, dateArr+len, cmp);
for (int i = 0; i < len; i++) {
cout << dateArr[i].year << "-" << dateArr[i].month << "-" << dateArr[i].day << endl;
}
return 0;
}
输出结果为:
2018-12-1
2019-1-25
2019-8-21
2020-6-18
以上就是在C/C++中对日期数组进行排序的方法。