未排序向量上的lower_bound/upper_bound

lower_bound/upper_bound on unsorted vector

本文关键字:bound upper lower 排序 向量      更新时间:2023-10-16
const std::vector<int> v = {5, 7, 3, 6, 5, 4, 7, 8, 5, 6};
auto low = std::lower_bound( v.begin(), v.end(), 7);
auto high = std::upper_bound( v.begin(), v.end(), 7);
std::cout << low - v.begin() << " " << high - v.begin();

因此,当我尝试在Mac上使用clang++编译器编译此代码时,它会将输出返回为

10 10

这意味着对于高和低都是CCD_ 1,尽管低应该是=1并且高=7(数字8(。我做错了什么?

std::lower_boundstd::upper_bound要求对范围进行"排序"(根据谓词和实际给定的值进行划分(,但实际情况并非如此。