lower_bound、upper_bound c++ 的命名

Naming of lower_bound, upper_bound c++

有谁知道他们为什么起这些名字?来自数学背景,他们总是让我的头脑纠结,因为它们都是数学下限,即有限世界中的最小值。另外,stl 中给出的自然语言定义在我看来是一个糟糕的心智模型。

是否有人使用心理同义词来使用它们,或者他们只记得天真的实现?

lower_bound(rng, x) = get_iter_to(mathematical_lower_bound(rng | filter([](auto y)
                                  {return x<=y;}))
upper_bound(rng, x) = get_iter_to(mathematical_lower_bound(rng | filter([](auto y)
                                  {return x<y;})))

Igor Tandetnik 在评论中回答了这个问题。

有问题的集合是可以在保留顺序的情况下在前面插入给定值的元素。

例如,如果我们想将 2 插入到范围 [0,1,2,2,3,4] 中,那么我们可以将其插入到索引 2、3 或 4 处。lower_bound 将迭代器提供给开头的范围。 upper_bound 给出此范围内的最后一个元素。

我想这是库实现者编写枢轴的名称,而不是我试图查找 keys/indices 数字向量的名称。