gpt4 book ai didi

c++ - 找出两个范围(其中一个已排序)是否具有共同元素

转载 作者:行者123 更新时间:2023-11-30 04:05:14 25 4
gpt4 key购买 nike

我编写了以下代码:

std::vector<int> vec;
std::vector<int> sortedRange;
// ...
bool hasCommonElement =
std::any_of(begin(vec), end(vec),
std::bind(std::binary_search, begin(sortedRange), end(sortedRange), _1));

编译器提示它无法找出我指的是哪个二进制搜索重载。您还有其他优雅的解决方案吗?或者它无法编译的充分理由?

编辑

  • 我知道我可以使用 lambda。但这里的绑定(bind)似乎更优雅(如果我有通用的 lambda,那就太好了!但我没有)。
  • 我知道我可以限定迭代器类型:binary_search<std::vector<int>::iterator> .但它更不优雅。
  • 我知道我也可以通过对“vec”进行排序并使用 set_intersection 来做到这一点。但这也更复杂。

最佳答案

您可以使用 lambda 代替 bind:

bool hasCommonElement = any_of(begin(vec), end(vec), [&](int x) {return binary_search(begin(sortedRange), end(sortedRange), x);});

关于c++ - 找出两个范围(其中一个已排序)是否具有共同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com