c++数组sort函数自定义排序
时间: 2025-02-02 10:08:07 浏览: 62
### C++ 中使用 `std::sort` 对数组进行自定义排序
在 C++ 中,可以利用标准模板库 (STL) 提供的 `std::sort` 函数来对容器中的元素进行排序。为了实现更灵活的排序逻辑,可以通过传递一个比较器(comparator),即 lambda 表达式或函数对象,给 `std::sort` 来指定自定义排序规则。
对于数组而言,首先需要将其转换为迭代器范围以便于 `std::sort` 处理。下面是一个具体的例子展示如何通过 lambda 表达式作为比较器来进行自定义排序:
```cpp
#include <algorithm>
#include <iostream>
// 假设有一个计算权重的辅助函数
int Weight(int value) {
// 这里只是一个简单的示例,实际应用中可以根据需求调整此函数的具体行为
return value * 2;
}
int main() {
int arr[] = {5, 3, 8, 6, 7};
// 获取数组长度
size_t n = sizeof(arr)/sizeof(*arr);
// 使用lambda表达式的自定义排序方式
std::sort(std::begin(arr), std::end(arr), [](const int& x, const int& y){
return Weight(x) < Weight(y);
});
// 输出已排序后的数组
for(auto elem : arr)
std::cout << elem << " ";
}
```
上述代码片段展示了如何创建并调用带有自定义比较器的 `std::sort` 方法[^1]。这里使用的匿名函数接收两个参数,并返回布尔值以决定这两个数之间的顺序关系;在这个特定的例子中,按照各自经过 `Weight()` 转换之后的结果从小到大排列原始数值。
阅读全文
相关推荐



















