c++ - 什么是相对顺序,stable_partition 有什么作用?
问题描述
所以我得到了这个代码:
#include <vector>
#include <algorithm>
bool isEven(int x) {
return x % 2 == 0;
}
int main() {
std::vector<int> vec = {1,7,3,10,9,6};
std::stable_partition(vec.begin(), vec.end(), isEven);
}
现在我不明白stable_partition
和之间的具体区别是什么partition
。
所以我看了我的书,上面写着:
stable_partition 维护每个分区中元素的相对顺序
但我不明白,元素的相对顺序是什么?
这是否意味着与分区谓词不匹配的元素保持相同的顺序?如果是,如何更改它们std::partition
?
提前致谢。
解决方案
元素的相对顺序只是特定分区内的元素相对于彼此的顺序。
例如,在partition
ing之后
{1,7,3,10,9,6}
我们得到:
{6,10} {1,3,7,9} // one of the possible results
// ^^^^^^ ^^^^^^^^^ elements within partition can be in any order
所以不能保证保持相对顺序。请注意,6 在 10 之前,而在 10 之后是在分区之前。
另一方面,如果你做一个stable_partition
ing,你会得到:
{10,6} {1,7,3,9} // only possible result
并且保证每个分区内的相对顺序保持不变。
推荐阅读
- database - Firebase 实时数据库中的读取和写入权限
- python - 制作范围函数后如何将空格添加到开发变量中
- hadoop - java.io.IOException:等待独立服务器启动 | MiniZooKeeperCluster
- oracle - Oracle中两个事务可以同时修改同一行吗?
- uno-platform - Uno 平台不支持 System.ComponentModel.DataAnnotations 吗?
- c# - 获取页面上的所有链接 - HtmlAgilityPack
- node.js - axios删除req.params undefined react nodejs
- javascript - mat-table 在 *ngFor 循环内有条件地显示 colspan 和 rowspan
- java - OSGi 插件(MagicDraw 19)JUnit 测试类路径错误
- c - 我的文件 I/O 操作函数中的错误地址