c++记录不连续的时间段
时间: 2024-03-03 07:48:14 浏览: 38
要记录不连续的时间段,可以使用std::set来存储时间段的起始时间点和结束时间点,然后通过迭代器遍历set中的元素来计算总时间长度。
具体实现可以定义一个结构体来表示时间段,包含起始时间点和结束时间点。然后定义一个std::set<TimeRange>来存储时间段,其中TimeRange是我们刚刚定义的结构体。
对于添加时间段,可以使用set的insert()方法来添加,对于查询总时间长度,可以遍历set中的元素并累加时间段的长度,最后返回累加的结果即可。
以下是一个示例代码:
```c++
#include <iostream>
#include <set>
struct TimeRange {
time_t start;
time_t end;
};
// 定义比较函数,用于set中元素的排序
bool operator<(const TimeRange& a, const TimeRange& b) {
return a.start < b.start;
}
// 计算时间段的长度
time_t get_time_range_length(const TimeRange& range) {
return range.end - range.start;
}
int main() {
std::set<TimeRange> time_ranges;
// 添加时间段
time_ranges.insert({time(nullptr), time(nullptr) + 3600}); // 1小时
time_ranges.insert({time(nullptr) + 7200, time(nullptr) + 10800}); // 3小时
// 计算总时间长度
time_t total_length = 0;
for (auto it = time_ranges.begin(); it != time_ranges.end(); ++it) {
total_length += get_time_range_length(*it);
}
std::cout << "Total length: " << total_length << " seconds\n";
return 0;
}
```
在上面的示例代码中,我们使用time_t来表示时间戳,time(nullptr)可以获取当前时间戳。在实际使用中,可以根据自己的需求来选择时间表示方式。