断言该向量由值x分区

use*_*212 1 c++ vector

代码段

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的元素

Que*_*tin 5

感谢委员会中很棒的人,你对分区矢量的要求可以表示为"是矢量分区吗?",它很好地映射到标准std::is_partitioned算法.生活不漂亮吗?

assert(std::is_partitioned(v.begin(), v.end(), [](int e) { return e <= 3; }));
Run Code Online (Sandbox Code Playgroud)