我正在尝试对对象矢量进行排序。对象(InOutPair)声明如下:
// Pair that contains pointers to x vector and y string
class InOutPair {
std::pair< std::vector<double>*, std::string* > pair_;
public:
InOutPair(std::vector<double>* x, std::string* y) { pair_ = make_pair(x,y); }
std::vector<double> x() const { return *pair_.first; }
std::string y() const { return *pair_.second; }
};
我有一个名为InOutPair
的{{1}}向量,我尝试使用仿函数pairs_
使用额外属性对此向量进行排序:
XSorter
不幸的是,当我尝试构建时,我收到以下错误:
class XSorter
{
int index_;
public:
XSorter(int index) { index_ = index;}
bool operator() (const InOutPair& left, const InOutPair& right) const {
return left.x()[index_] < right.x()[index_];
}
};
//...
int attr = 1;
sort(pairs_.begin(), pairs_.end(), XSorter(attr)); // <--error occurs here
我不确定出了什么问题?我已经重载了passing ‘const InOutPair’ as ‘this’ argument of ‘InOutPair& InOutPair::operator=(const InOutPair&)’ discards qualifiers [-fpermissive]
函数const以及成员函数operator()
。谢谢!
编辑: stl_algo.h中发生错误:
InOutPair::x()