【发布时间】:2020-04-13 17:29:24
【问题描述】:
我了解C++ 中map 的底层数据结构是一个自平衡二叉搜索树。由于在这些数据结构中,找到键的下限和上限有很多用途,您会认为 map lower_bound 和 upper_bound 函数将为您提供这种能力。令人遗憾的是,这些功能无法实现这一点。
有谁知道为什么 lower_bound 的行为方式如此? (它为您提供不在给定密钥之前的密钥)。
【问题讨论】:
-
确认你的期望...
std::prev(m.lower_bound(key))(忽略绑定检查)。 -
因为这就是数学中上下界的工作方式? en.wikipedia.org/wiki/Upper_and_lower_bounds
-
我不认为数学定义在这里有很大的相关性。但不想陷入那种讨论。我的主要观点是,我有很多用法可以找到具有最大键的元素,小于给定键。现在的情况是,我必须找到 lower_bound 并反向迭代才能找到它。
标签: c++ dictionary lower-bound