基于函数而不是集合的二进制搜索或迭代器?

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

作为一个简单的例子,我想通过二进制搜索找到N的平方根。但是我不想自己实现二进制搜索,而是使用std::lower_bound或类似的东西。我可以写类似的东西吗?

int square(int x) {
  return x * x;
}

int square_root(int N) {
  // Assume I know the results is between 0 and 10000.
  return std::lower_bound(0, 10000, square, N);
}

是否有这样的函数,而不是从集合的迭代器中获取值,而是从回调函数中获取值?

或者,有一种方法可以基于函数而不是集合来创建迭代器,以便我可以执行以下操作:

return std::lower_bound(func_it(0, square), func_it(10000, square), N);

我知道我可以自己编写此函数或迭代器。我问标准库中是否存在这样的功能,因为它似乎很有用,但我找不到它。

作为一个简单的例子,我想通过二进制搜索找到N的平方根。但是我不想自己实现二进制搜索,而是使用std :: lower_bound或类似的东西。我可以写...

c++ binary-search lower-bound
1个回答
2
投票

C ++ 20的标准库包括范围,该范围基本上是针对此类内容而制作的。您需要transform_view

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