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