对矢量对:无匹配函数
Sort vector of pairs: No matching function
我遵循了此处给出的解决方案对矢量进行分类。
我得到
linear_problem.h:275:
error: no matching function for call to
‘sort(std::vector<std::pair<int, double> >::iterator,
std::vector<std::pair<int, double> >::iterator, <unresolved overloaded
function type>)’
std::sort(data.begin(), data.end(), compareFunc);
带代码的类是:
class Coefficients{
private:
std::vector<std::pair<int, double>> data;
public:
Coefficients(){}
bool compareFunc(const std::pair<int, double> &a, const std::pair<int, double> &b){
return a.first > b.first;
}
void sort(){
std::sort(data.begin(), data.end(), compareFunc);
}
};
我不知道这是什么问题,因为代码很像示例。
compareFunc()
是一个成员函数,需要调用 Coefficients
的实例。
您可以使其成为static
类成员功能来解决该问题:
static bool compareFunc(const std::pair<int, double> &a, const std::pair<int, double> &b){
// ^^^^^^
return a.first > b.first;
}
void sort(){
std::sort(data.begin(), data.end(), &Coefficients::compareFunc);
// ^^^^^^^^^^^^^^
}
使用C 14,最好的解决方案非常容易编写。
std::sort(v.begin(), v.end(), [](auto &left, auto &right) {
return left.second < right.second;
});
或者您可以使用比较器,例如:
struct comp{
bool operator()(const std::pair<int,int> &left, const std::pair<int,int> &right) {
return left.second < right.second;
}
};
std::sort(v.begin(), v.end(), comp());
相关文章:
- Rcpp并行无匹配函数,用于调用"转换"
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 无匹配函数呼叫getline()
- 错误:呼叫构造器的匹配函数无匹配功能
- C 线程 - 无匹配函数供呼叫
- C 汇编错误:无匹配的构造函数以进行初始化
- 错误代码:无匹配函数供呼叫
- 为链接列表构建迭代器类(错误:无匹配的构造函数以初始化)
- 子类/超类的"无匹配函数调用"
- 无匹配函数呼叫
- 与(C )无匹配函数
- 将迭代器作为参数传递时无匹配的函数调用
- 无匹配函数呼叫
- 无匹配函数呼叫(类,C )
- C 11无匹配函数,可以呼叫'std :: vector
- 对矢量对:无匹配函数
- C 在较旧的JSON :: NLOHMANN库中使用push_back时无匹配函数
- std::查找"错误无匹配函数"
- C 错误无匹配函数
- 将STD向量作为参考:无匹配函数要呼叫