有一个std::map<double,double> map,first是开始时间 second是结束时间,输入一个时间,判断输入的时间是否在开始时间和结束时间之内
时间: 2023-05-23 21:07:29 浏览: 89
A:
可以使用std::map::lower_bound()函数和std::map::upper_bound()函数来完成该操作。这两个函数都可以查找一个元素,它们返回的迭代器指向的元素要么是等于搜索键值,要么是大于搜索键值的最小元素。std::map::lower_bound()返回的迭代器指向的是第一个关键字不小于给定元素的元素,而std::map::upper_bound()返回的迭代器则是指向第一个关键字大于给定元素的元素。
因此,我们可以使用std::map::lower_bound()查找大于或等于输入时间的开始时间,然后再使用std::map::upper_bound()查找大于输入时间的结束时间。如果这两个迭代器之间存在元素,则说明输入时间在开始时间和结束时间之间。
以下是代码示例:
```cpp
#include <map>
#include <iostream>
int main() {
std::map<double, double> my_map = {{1.0, 3.0}, {4.0, 5.0}, {6.0, 8.0}};
double input_time = 5.5; // 输入时间
auto time_it = my_map.lower_bound(input_time);
if (time_it != my_map.end() && input_time < time_it->second) {
std::cout << "输入时间在开始时间和结束时间之间" << std::endl;
} else {
std::cout << "输入时间不在开始时间和结束时间之间" << std::endl;
}
return 0;
}
```
输出:
```
输入时间在开始时间和结束时间之间
```
阅读全文