在C++中,partition
和sort
都是STL算法,用于对容器中的元素进行排序或者重排。它们的主要区别在于:
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
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
是一种排序算法,用于对容器中的元素进行排序。