有一些日期,日期格式为“MM/DD/YYYY”。编程将其按日期大小排列。用c++程序实现该问题。
时间: 2024-02-22 09:59:32 浏览: 180
检查日期有效性:程序检查以 DD/MM/YYYY 格式输入的日期是否有效。-matlab开发
可以使用C++的标准库中的vector和algorithm来实现。具体思路是将日期字符串转换为日期对象,然后将日期对象插入到vector中,最后使用sort函数来对vector进行排序,排序时可以自定义一个比较函数来比较日期大小。
以下是一个示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <ctime>
using namespace std;
// 自定义日期类
class Date {
public:
int year, month, day;
Date(int y, int m, int d) : year(y), month(m), day(d) {}
// 重载小于运算符,用于排序
bool operator < (const Date& other) const {
if (year != other.year) return year < other.year;
if (month != other.month) return month < other.month;
return day < other.day;
}
};
// 将日期字符串转换为日期对象
Date parseDate(const string& str) {
int y, m, d;
sscanf(str.c_str(), "%d/%d/%d", &m, &d, &y);
return Date(y, m, d);
}
int main() {
// 读入日期字符串
vector<string> dateStrs = {"12/03/2021", "11/04/2022", "10/05/2021", "09/06/2022"};
// 转换为日期对象并插入到vector中
vector<Date> dates;
for (const string& str : dateStrs) {
dates.push_back(parseDate(str));
}
// 对vector进行排序
sort(dates.begin(), dates.end());
// 输出排序后的日期
for (const Date& date : dates) {
printf("%02d/%02d/%d\n", date.month, date.day, date.year);
}
return 0;
}
```
输出结果如下:
```
10/05/2021
12/03/2021
09/06/2022
11/04/2022
```
阅读全文