代码段
std::vector<int> v{ 3, 8, 2, 5, 1, 4, 7, 6};
Partition(v.begin(), v.end(), v.begin());
Run Code Online (Sandbox Code Playgroud)
应重新排列向量v,使前n个元素小于或等于3,后面的元素大于3.结果向量应如下所示:
1,2,3,5,8,4,7,6
如何测试Partition是否在断言声明以下内容的断言语句中生成正确的结果:
断言向量的第一部分仅包含小于或等于x的元素,而秒部分仅包含大于x的元素
?
感谢委员会中很棒的人,你对分区矢量的要求可以表示为"是矢量分区吗?",它很好地映射到标准std::is_partitioned算法.生活不漂亮吗?
assert(std::is_partitioned(v.begin(), v.end(), [](int e) { return e <= 3; }));
Run Code Online (Sandbox Code Playgroud)