自定义一个函数对象 用于对std::vector〈int〉进行排序
时间: 2024-10-13 08:05:59 浏览: 27
自定义一个函数对象(Function Object)在C++中可以用于`std::sort`等算法,当你需要按照特定规则对`std::vector<int>`进行排序时。这通常通过创建一个类,该类继承自`std::unary_function`、`std::binary_function`或其他相关的泛型模板来实现。
例如,假设我们要按整数的绝对值大小排序,我们可以创建这样一个名为`AbsComparator`的类:
```cpp
#include <algorithm>
#include <vector>
#include <functional>
class AbsComparator : public std::unary_function<int, int> {
public:
bool operator()(const int& a, const int& b) const {
return std::abs(a) < std::abs(b);
}
};
int main() {
std::vector<int> vec = {5, -3, 10, -1, 7};
// 使用自定义函数对象对vector进行排序
std::sort(vec.begin(), vec.end(), AbsComparator());
for (const auto& num : vec) {
std::cout << num << " ";
}
// 输出:-1 5 7 10 -3
return 0;
}
```
在这个例子中,`AbsComparator`就是一个函数对象,它的`operator()`方法实现了比较操作。然后我们把这个对象传递给`std::sort`,它会根据这个比较器的规则对向量进行排序。
阅读全文