所以我得到了这段代码:

#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_partitionpartition之间的具体区别是什么。
所以我看了看书说:

但是我不明白,元素的相对顺序是什么
这是否意味着与分区谓词不匹配的元素保持相同的顺序?如果是,如何在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/

10-12 14:20
查看更多