vector排序
时间: 2025-05-30 10:39:54 浏览: 18
### C++ Vector 排序方法
对于 `std::vector` 的排序操作,可以利用标准库中的 `std::sort()` 函数来进行高效处理[^1]。此函数位于 `<algorithm>` 头文件内。
下面是一个简单的例子展示如何对整数类型的 `std::vector<int>` 使用默认升序排列:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含 sort()
using namespace std;
int main(){
vector<int> vec = {5, 2, 9, 1, 5, 6};
// 对vec进行升序排序
sort(vec.begin(), vec.end());
// 输出已排序后的数组元素
for (auto& val : vec){
cout << val << ' ';
}
}
```
如果希望按照降序方式对容器内的数据项实施排序,则可以通过传递第三个参数给 `std::sort()` 来指定比较准则。这里给出一段代码片段用于创建一个从大到小顺序的列表:
```cpp
// 定义一个lambda表达式作为自定义比较器
bool descending(int a, int b) {
return a > b;
}
...
// 应用带有自定义比较器的sort()
sort(vec.begin(), vec.end(), descending);
```
除了基本数值型外,当涉及到更复杂的数据结构比如对象实例时,同样能够通过重载小于运算符 (`<`) 或者提供类似的二元谓词来完成定制化排序逻辑。
#### 自定义类成员变量排序示例
假设有一个表示学生的简单类 Student ,其中包含姓名 name 和成绩 score 成员属性;现在想要依据分数对学生记录做降序整理:
```cpp
class Student{
public:
string name;
double score;
bool operator<(const Student &other)const{
return this->score < other.score;
}
friend ostream& operator<<(ostream &os,const Student &s){
os<< s.name <<" "<< s.score ;
return os;
}
};
...
vector<Student> students = {/*初始化若干学生*/};
sort(students.rbegin(),students.rend()); // 默认按operator<
```
为了实现更加灵活多变的需求场景,还可以考虑采用 lambda 表达式的匿名函数形式来自定义比较规则而无需修改原有类定义。
阅读全文
相关推荐


















