2024年5月11日发(作者:)

c++ vector排序函数

C++ Vector排序函数

一、概述

Vector是C++中的一种容器类型,它通过动态分配内存来存储对

象。vector可以存储任何类型的对象,但是只有当它们之间有一定

的关系时才能够进行排序。为了实现排序,C++标准库提供了sort函

数。该函数可以对任意类型的vector进行排序,如果没有特别指定,

默认按从小到大的顺序进行排序。

二、sort函数的基本用法

当容器中的对象是简单类型时,例如int或double,可以用标

准库提供的sort函数来实现排序;

例如:

#include

#include

std::vector myVector; //定义一个int类型的vector

_back(5); //插入5

_back(2); //插入2

_back(4); //插入4

std::sort((), ()); //对该

vector进行排序

三、如何在vector中排序复杂类型

当vector中存储的是复杂的类型时,如果要实现排序,必须在

- 1 -

sort函数中添加用来定义排序方法的比较器(comparator)。

例如:

#include

#include

struct MyType{

int a;

double b;

}

std::vector myVector; //定义一个MyType类型的

vector

_back({3, 2.5}); //插入3, 2.5

_back({2, 4.2}); //插入2, 4.2

_back({1, 6.3}); //插入1, 6.3

//比较器定义按照a的大小排序

bool myComp(MyType m1, MyType m2)

{

return m1.a < m2.a;

}

std::sort((), (), myComp); //

对myVector用myComp比较器排序

四、C++中的sort函数的其他选项

C++中的sort函数除了指定比较器之外,还有其他的一些选项可

- 2 -

以指定排序相关的行为。

例如,可以指定stable_sort函数,以保证排序后,相等的元素

之间的相对位置不会发生变化;可以指定partial_sort函数,只对

前k个元素进行排序;可以指定nth_element函数,只排序第n个元

素,而不必排序其他元素。

五、总结

C++标准库提供的sort函数可以对任意类型的vector进行排序,

默认按从小到大的顺序进行排序。当vector中存储的是复杂的类型

时,必须在sort函数中添加比较器来定义排序方法;此外,还可以

根据需要指定stable_sort、partial_sort等函数,以更精确地控制

排序行为。

- 3 -