所以我得到了这段代码:
#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
之间的具体区别是什么。所以我看了看书说:
但是我不明白,元素的相对顺序是什么?
这是否意味着与分区谓词不匹配的元素保持相同的顺序?如果是,如何在
std::partition
中进行更改?提前致谢。
最佳答案
元素的相对顺序仅是特定分区内的元素相对于彼此的顺序。
例如,在partition
编码后
{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
编码,则会得到:{10,6} {1,7,3,9} // only possible result
并且保证了每个分区内的相对顺序。关于c++ - 什么是相对顺序?stable_partition做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63343513/