is_partitioned 没有元素满足谓词时的行为

is_partitioned behavior when no elements satisfy predicate

看到下面的代码我很惊讶return正确:

bool isSadPancake(char c) { return c == '-'; }

string pancakes = "+++";

bool isParitioned = is_partitioned(pancakes.begin(), pancakes.end(), isSadPancake);

我在网上看到的文档说 is_partitioned return 如果满足谓词的 [first, last) 范围内的所有元素都出现则为真在所有没有的元素之前。在这种情况下,没有满足谓词的元素出现,因此我预计 return 值为 false。这是预期的行为吗?我可以在标准的哪个位置找到更多详细信息?

另一种理解方式是 所有 满足谓词的元素实际上确实出现在不满足谓词的元素之前。全部为零。

一个更好的思考方式是这样的: 被分割的序列意味着什么?这意味着您应该能够首先找到不满足谓词的元素,然后找到满足谓词的元素。而且你在你的序列中找不到这样的反例。

如果你清楚地阅读了它说的文档 http://en.cppreference.com/w/cpp/algorithm/is_partitioned

Return值 如果范围 [first, last) 为空或被 p 分区,则为真。否则为假。