我目前有一个 std::map<int,int>
值是这样的
Key Value
60 2
84 3
99 5
现在我总是从方法中得到一个 int
int a = SomeMethod();
我想做的是检查该数字是否在键的范围内 所以如果数字是 45,它小于键值 60,所以我应该返回 2。另一个例子是如果数字比键值 60 多 75 并且小于键值 84,那么我应该返回 3。 我目前正在考虑的方法是一旦我有一个数字。我将遍历 map ,直到遇到一个比我想要的大的数字。如果是,我会把它从 map 上移除。然后继续这样做,直到我得到一个符合我条件的数字。我想知道是否有更好的方法来解决这个问题?
最佳答案
使用std::map::lower_bound
.它返回一个指向第一个条目的迭代器,其键不小于给定参数。
int a = SomeMethod();
auto it = myMap.lower_bound(a);
int val = someNotFoundSentinelValue;
if(it != myMap.end()
val = it->second;
关于c++ - 从 map 上检查范围的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422435/