从地图上检查范围的最佳方法

Best way to check a range from a map

我目前有一个std::map<int,int> 值是这样的

Key Value
60   2
84   3 
99   5

现在我总是从方法中得到一个整数

int a = SomeMethod();

我想做的是检查该数字是否在键的范围内 所以如果数字是 45,它小于键值 60,所以我应该返回 2。另一个例子是如果数字比键值 60 多 75 并且小于键值 84,那么我应该返回 3。 我目前正在考虑的方法是一旦我有一个数字。我将遍历地图,直到遇到一个比我想要的大的数字。如果是,我会将其从 map.Then 中删除,继续这样做,直到我得到适合我条件的数字。我想知道是否有更好的方法来解决这个问题?

使用std::map::lower_bound。它 returns 指向第一个条目的迭代器,其键不小于给定参数。

int a = SomeMethod();
auto it = myMap.lower_bound(a);
int val = someNotFoundSentinelValue;
if(it != myMap.end()
  val = it->second;