【发布时间】:2021-03-15 14:21:51
【问题描述】:
考虑这段代码:
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)。)
【问题讨论】:
-
您需要 C++20 范围或自定义迭代器。
-
我不明白
found是如何在这里工作的。无论如何,当循环退出时,i >= 0不会是真的吗? -
for()循环中的初始化部分发生在条件检查和正文执行之前,因此i不可能为负数,也不清楚您想要实现什么。 -
那么请编辑您的问题以说明这一点。就目前而言,这个问题让未来的读者感到困惑。