与 lower_bound 不同,upper_bound 不返回迭代器到元素,如果它比较等于 value,但只有当它比较严格更大。
如果我想要一个大于或等于的上界算法,是否有替代方案。
与 lower_bound 不同,upper_bound 不返回迭代器到元素,如果它比较等于 value,但只有当它比较严格更大。
如果我想要一个大于或等于的上界算法,是否有替代方案。
您可以将迭代器减少 1。
auto begin = ...;
auto end = ...;
auto it = std::upper_bound(begin, end, target);
if (it == begin)
return it;
-- it;
if (*it < target)
return ++it;
else
return it;
迭代器的位置将是这样的,假设您正在搜索 2:
1 1 1 2 2 2 2 3 3 3 3
^ ^ ^
lb | ub
this function
1 1 1 1 3 3 3 3
^
lb & ub & this function