用 std::find_if 和 lambda 替换 for 循环

Replace for loop with std::find_if and a lambda

考虑这段代码:

int i{ -1 };
for(i=0; i<size; ++i) if (predicate(i)) break;
bool found{ i < size };

这应该很容易用 std::find_if 替换,但它需要一个迭代器,用于 0 到 size-1 范围内的整数。 (相当于C#的IEnumerable Enumerable.Range(0, size-1)。)

由于您使用 boost 标签标记了您的问题,我认为 boost::irange along with boost::find_if 将完成工作:

boost::find_if(boost::irange(0, size - 1), predicate);