我不明白为什么
std::ranges::binary_search
的工作方式与std::binary_search
不同。例如这样的代码:
std::vector<int> A = {0, 10, 12, 30};
cout << std::ranges::binary_search(A.begin(), A.end(), 28) << endl;
cout << std::binary_search(A.begin(), A.end(), 28) << endl;
输出:
1
0
有人可以解释一下吗?
我尝试过更改向量内部的类型,并且检查了没有迭代器的范围版本。当然,我还检查了 cppreference 中的文档,但这些都没有帮助。
#include <vector>
#include <algorithm>
#include <iostream>
int main()
{
std::vector<int> A = { 0, 10, 12, 30 };
std::cout << std::ranges::binary_search(A.begin(), A.end(), 28) << std::endl;
std::cout << std::binary_search(A.begin(), A.end(), 28) << std::endl;
}
两者产生相同的结果:
0
0