用c plus plus 14写一个从小到大自动排序的队列,队列的类型是std::time_t,
时间: 2023-06-03 14:06:50 浏览: 36
好的,我可以为您编写一个从小到大自动排序的队列程序,代码如下:
```
#include <iostream>
#include <queue>
#include <ctime>
using namespace std;
struct cmp {
bool operator()(const time_t& a, const time_t& b) {
return difftime(a, b) < 0;
}
};
int main() {
priority_queue<time_t, vector<time_t>, cmp> q;
time_t now = time(NULL);
q.push(now + 10); // 添加一个10秒后的时间
q.push(now - 5); // 添加一个5秒前的时间
q.push(now + 20); // 添加一个20秒后的时间
while (!q.empty()) {
cout << ctime(&q.top()) << endl; // 输出队首元素
q.pop(); // 弹出队首元素
}
return 0;
}
```
解释一下代码,我们使用 priority_queue 创建一个自动排序的队列,队列中存储的是时间类型 std::time_t。为了让队列中的元素自动从小到大排序,我们定义了一个比较函数 cmp,其中 operator() 操作符会在两个时间元素进行比较时被调用。
在主函数中,我们创建了一个 priority_queue 对象 q,并添加了三个时间元素。为了方便,我们用 ctime 函数将时间转换为字符串输出。
最后,我们通过 while 循环依次弹出队列中的元素,直到队列为空。
希望这个程序能满足您的要求。
相关推荐


















