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 数字向量的名称。
有谁知道他们为什么起这些名字?来自数学背景,他们总是让我的头脑纠结,因为它们都是数学下限,即有限世界中的最小值。另外,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 数字向量的名称。