使用额外参数与仿函数排序对象矢量

时间:2015-04-19 10:48:42

标签: c++ sorting operator-overloading

我正在尝试对对象矢量进行排序。对象(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()

0 个答案:

没有答案