温馨提示×

C++中partition与sort的区别

c++
小樊
85
2024-08-19 20:21:34
栏目: 编程语言

在C++中,partitionsort都是STL算法,用于对容器中的元素进行排序或者重排。它们的主要区别在于:

  1. partition算法用于将容器中的元素根据给定的条件进行划分,使得满足条件的元素在前面,不满足条件的元素在后面。划分后,不保证元素的相对位置不变。例如,可以将所有小于某个值的元素放在前面,而大于等于某个值的元素放在后面。
std::vector<int> vec = {5, 3, 8, 2, 7, 4};
auto it = std::partition(vec.begin(), vec.end(), [](int i){ return i < 5; });
// vec变为 {3, 2, 4, 5, 7, 8},it指向第一个不满足条件的元素7
  1. sort算法用于对容器中的元素进行排序。它会对所有元素进行重新排列,使得它们按照指定的排序规则(默认是升序)排列。排序后,元素的相对位置会改变。
std::vector<int> vec = {5, 3, 8, 2, 7, 4};
std::sort(vec.begin(), vec.end());
// vec变为 {2, 3, 4, 5, 7, 8}

总的来说,partition是一种重排算法,用于将符合特定条件的元素移动到容器的前面,而sort是一种排序算法,用于对容器中的元素进行排序。

0