为什么 std::ranges::binary_search 和 std::binary_search 对于相同的输入产生不同的结果?

问题描述 投票:0回答:1

我不明白为什么

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 中的文档,但这些都没有帮助。

c++ c++20 binary-search std-ranges c++23
1个回答
0
投票
#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

演示

© www.soinside.com 2019 - 2024. All rights reserved.