考虑以下代码:
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
和boost::find_if
将完成以下工作:
boost::find_if(boost::irange(0, size - 1), predicate);