[英]What's the best way to search from several map<key,value>?
[英]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。另一个示例是,该数字是否比键值大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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.