STL提供了二进制search函数std :: lower_bound和std :: upper_bound,但我倾向于不使用它们,因为我一直无法记住它们做什么,因为它们的契约对我来说似乎完全神秘。 只要看名字,我猜想“lower_bound”可能是“last lower bound”的缩写, 即sorting列表中最后一个<=给定值(如果有的话)的元素。 同样,我猜“upper_bound”可能是“第一上限”的缩写, 即sorting列表中的第一个元素> =给定的val(如果有的话)。 但文件说,他们做了一些相当不同的东西 – 似乎是一种倒退和随机的混合物,对我来说。 解释文档: – lower_boundfind> = val的第一个元素 – upper_boundfind> val的第一个元素 所以lower_bound根本找不到下界; 它find第一个上界!? upper_boundfind第一个严格的上界。 这有意义吗?? 你怎么记得它?