【发布时间】:2015-02-10 01:09:25
【问题描述】:
我目前有一个std::map<int,int>
像这样的值
Key Value
60 2
84 3
99 5
现在我总是从方法中得到一个 int
int a = SomeMethod();
我想做的是检查该数字是否在键的范围之间 因此,如果数字为 45,则它小于键值 60,因此我应该返回 2。另一个示例是,如果数字比键值 60 多 75 且小于键值 84,那么我应该返回 3。 我目前正在考虑的方法是一旦我有一个数字。我将遍历地图,直到遇到一个大于我想要的数字。如果是,我会将其从地图中删除。然后继续这样做,直到我得到一个符合我条件的数字。我想知道是否有更好的方法来解决这个问题?
【问题讨论】:
-
你的地图总是有 3 个数字吗?
-
顺便说一句,“no”不是缩写“number”的好方法
-
@JerryCoffin 是的。感谢您指出错误。
-
我的地图可能有 5 个数字
-
@MistyD,你最好使用
vector和binary search。只是说'
标签: c++ dictionary c++03