用 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);
考虑这段代码:
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);