c++ - 从 map 上检查范围的最佳方法

标签 c++ dictionary c++03

我目前有一个 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/

相关文章:

java - 如何从我发送到 put(Object) 到 map 中的方法返回 List<String> (有示例)

c++ - const_casting 可变字段安全吗?

c++ - 使用未覆盖函数的中间派生类在多级继承中覆盖

c++ - 未指定的函数参数

c++ - 添加大数字 C++ - 初始化程序失败

c++ - 我怎么知道 C++ 编译器是否生成线程安全的静态目标代码?

c# - 词典 - 添加注释以驱动智能感知

python - 如何找到两个字典列表之间的区别?

c++ - 静态模板函数访问静态类成员

c++ - 私有(private)继承中的对象切片