作为一个简单的例子,我想通过二进制搜索找到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 ++ 20的标准库包括范围,该范围基本上是针对此类内容而制作的。您需要transform_view
: