c++ - 断言 vector 按值 x 划分

标签 c++ vector

代码片段

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 应如下所示:

1,2,3,5,8,4,7,6

我如何测试 Partition 是否在口头断言以下内容的断言语句中产生正确的结果:

Assert that the first part of the vector only contains elements that are smaller than or equal to x and that the seconds part contains only elements that are greater than x

?

最佳答案

感谢委员会中的好人,您对要划分的 vector 的要求可以表示为“vector 是否已划分?”,这很好地映射到标准 std::is_partitioned算法。生活不是很美好吗?

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

关于c++ - 断言 vector 按值 x 划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42828750/

相关文章:

c++ - 将 vector 用于背包算法时抛出错误分配

c++ - Push_back 映射到 vector 中

c++ - 如何将多个 C++ vector 约束为相同大小?

c++ - 使用命令行参数创建结构 vector

c++ 数组初始化

c++ - 使用 swap-and-pop 迭代时删除 vector 中的元素

c++ - 如何使用 unicode 文件名打开 std::fstream(ofstream 或 ifstream)?

c++ - “稳定”的多维缩放算法

c++ - 是否可以在 C++ 中创建一个符合开放/封闭原则的工厂?

c++ - 空结构定义在 C 中是非法的,但在 C++ 中不是?