sort(weapons.begin(), weapons.end(), cmp);显示weapon函数调用中的参数太多
时间: 2024-02-19 17:58:16 浏览: 186
如果你的`weapons`是一个`std::vector<weapon>`类型的数组,那么调用`sort`函数时,第三个参数应该是一个函数对象,而不是一个函数指针。如果你使用的是函数指针,则会产生编译错误。因此,为了解决这个问题,你需要将比较函数改为一个函数对象。
以下是一个将比较函数改为函数对象的示例代码:
```c++
#include <algorithm>
#include <vector>
// 定义weapon结构体
struct weapon {
int id;
// 其他成员变量
};
// 定义比较函数对象
struct cmp {
bool operator()(const weapon& w1, const weapon& w2) const {
return w1.id < w2.id;
}
};
int main() {
// 假设weapons为包含weapon类型元素的vector数组
std::vector<weapon> weapons;
// 排序
std::sort(weapons.begin(), weapons.end(), cmp());
return 0;
}
```
在此示例中,我们定义了一个名为`cmp`的函数对象,并在其中重载了`()`运算符,以便它可以像函数一样被调用。然后,我们使用`cmp()`创建了一个`cmp`对象,并将其传递给`sort`函数的第三个参数。这样就可以按照`weapon`结构体中的`id`成员变量对`weapons`数组进行排序了。
阅读全文