我很惊讶地看到以下代码返回true:
bool isSadPancake(char c) { return c == '-'; }
string pancakes = "+++";
bool isParitioned = is_partitioned(pancakes.begin(), pancakes.end(), isSadPancake);
我在网上看到的文档说is_partitioned
如果满足谓词的范围 [first,last)中的所有元素都出现在所有不支持谓词的元素之前,则返回true。在这种情况下,没有出现满足谓词的元素,所以我期望返回值为false。这是预期的行为吗?我可以在标准中找到更多详细信息吗?
答案 0 :(得分:4)
另一种看待它的方式是,满足谓词的所有元素实际上都出现在那些没有这样做的元素之前。全部为零。
更好的思考方式是这样的:不的序列分区是什么意思?这意味着你应该能够首先找到一个不满足谓词的元素,然后找到一个满足谓词的元素。你无法在序列中找到这样的反例。
答案 1 :(得分:0)
如果你清楚地阅读了它所说的文件 http://en.cppreference.com/w/cpp/algorithm/is_partitioned
返回值 如果范围[first,last)为空或由p分区,则为true。否则就是假的。