📌  相关文章
📜  如何在C C++中对日期数组进行排序?(1)

📅  最后修改于: 2023-12-03 15:24:27.117000             🧑  作者: Mango

如何在C/C++中对日期数组进行排序?

在C/C++中,可以使用 struct 来表示日期,并使用标准库提供的排序函数对日期数组进行排序。

1. 定义日期结构体

首先需要定义一个日期结构体,该结构体包含年、月、日三个成员变量,如下所示:

struct Date {
    int year;
    int month;
    int day;
};
2. 实现比较函数

对日期数组进行排序需要实现一个比较函数(比较两个日期的大小关系)。可以使用 < 运算符来比较两个日期的大小关系,如下所示:

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;
}

上述比较函数先比较年,如果年相同再比较月,如果月相同再比较日。

3. 调用排序函数

使用标准库提供的排序函数 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);
4. 完整示例代码
#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++中对日期数组进行排序的方法。