【发布时间】:2016-11-25 16:33:03
【问题描述】:
我阅读了 C++ upper_bound() 函数和 lower_bound() 函数的说明。对我来说有趣的是,upper_bound() 只返回 value > val 的第一个迭代器(如果没有找到 val,则返回范围 [first, last) 中的最后一个迭代器)。
实现与lower_bound()不同,它返回的第一个迭代器NOT SMALLER than val,所以它允许返回指针等价于val。
我只是想知道以这种方式设计upper_bound() 的目的是什么,upper_bound() 不能返回值等于val 的迭代器?
例如:
vector<int> a = {1, 2, 3, 4};
auto i = lower_bound(a.begin(), a.end(), 2); // i is iterator at 2;
auto j = upper_bound(a.begin(), a.end(), 2); // j is iterator at 3;
【问题讨论】: