我目前有std::map<int,int>
用这样的值
Key Value
60 2
84 3
99 5
现在我总是从方法中获取一个int
int a = SomeMethod();
我想要检查的是该数字是否在密钥的范围之间 因此,如果数字是45,它小于键值60,所以我应该回来2.另一个例子是,如果数字比关键值60多75并且小于键值84,那么我应该回到3。 我目前想到的方法是我有一个数字。我会遍历地图,直到遇到一个比我想要的更大的数字。如果它是我将它从地图中删除。然后继续这样做,直到我得到一个符合我的条件的数字。我想知道是否有更好的方法来解决这个问题?
答案 0 :(得分:5)
使用std::map::lower_bound
。它将迭代器返回给第一个条目,其键不小于给定的参数。
int a = SomeMethod();
auto it = myMap.lower_bound(a);
int val = someNotFoundSentinelValue;
if(it != myMap.end()
val = it->second;