使用sort给vector排序
时间: 2025-04-04 19:13:46 浏览: 29
### C++ 中使用 `std::sort` 对 `std::vector` 进行排序
#### 升序排序
在 C++ 中,可以使用 `std::sort` 函数对 `std::vector` 容器中的元素进行升序排序。默认情况下,`std::sort` 按照从小到大的顺序排列元素。
以下是实现升序排序的一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 2, 8, 1, 3};
std::sort(vec.begin(), vec.end()); // 默认升序排序
for (const auto& num : vec) {
std::cout << num << " ";
}
return 0;
}
```
上述代码通过调用 `std::sort(vec.begin(), vec.end())` 实现了对 `vec` 的升序排序[^1]。
---
#### 降序排序
为了实现降序排序,可以通过传递自定义比较函数或者使用预定义的比较器(如 `std::greater<T>`)。以下是一个降序排序的例子:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 2, 8, 1, 3};
std::sort(vec.begin(), vec.end(), std::greater<int>()); // 使用 greater<> 实现降序
for (const auto& num : vec) {
std::cout << num << " ";
}
return 0;
}
```
在这个例子中,第三个参数指定了一个比较器 `std::greater<int>()`,它会改变默认的排序方向,从而实现从大到小的排序。
---
#### 自定义排序逻辑
如果需要更复杂的排序规则,还可以提供自己的比较函数或 lambda 表达式作为第三参数。例如,按绝对值大小排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
bool compareByAbs(const int a, const int b) {
return std::abs(a) < std::abs(b); // 绝对值较小者优先
}
int main() {
std::vector<int> vec = {-5, 2, -8, 1, 3};
std::sort(vec.begin(), vec.end(), compareByAbs);
for (const auto& num : vec) {
std::cout << num << " ";
}
return 0;
}
```
此代码片段展示了如何通过编写自定义比较函数来控制排序行为[^2]。
---
### 总结
- **升序排序**:只需调用 `std::sort(container.begin(), container.end())`。
- **降序排序**:需额外指定比较器,如 `std::greater<T>()` 或其他形式的比较函数。
- **复杂需求**:可通过传入 lambda 表达式或独立的比较函数满足特定场景下的排序需求。
阅读全文
相关推荐


















