代码段
std::vector<int> v{ 3, 8, 2, 5, 1, 4, 7, 6};
Partition(v.begin(), v.end(), v.begin());
应该重新排列 vector v,以使前n个元素小于或等于3,随后的元素大于3。结果 vector 应如下所示:
如何在断言中口头断言以下内容的断言中测试分区是否产生正确的结果:
?
最佳答案
多亏了委员会中的优秀人士,您对 vector 进行划分的要求可以表示为“ vector 是否被划分了?”,这与标准 std::is_partitioned
算法很好地对应。生活不是很美吗?
assert(std::is_partitioned(v.begin(), v.end(), [](int e) { return e <= 3; }));