C ++中的stable_sort

时间:2015-09-02 18:09:39

标签: c++ stable-sort

我试图使用stable_sort来排序指针向量

到某个班级。我有这样的代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class B
{
    public :
        B(int y, int j) {x = y, r = j;};

        void getVal() {cout << x << endl; };

        int x;
        int r;
};


bool compareB(B* b1, B* b2)
{
    return b1->getVal() < b2->getVal();
}

int main()
{
    B b1(3, 4), b2(-5, 7), b3(12, 111);

    vector<B*> myVec;
    myVec.push_back(&b1);
    myVec.push_back(&b2);
    myVec.push_back(&b3);

    std::stable_sort(myVec.begin(), myVec.end(), compareB);
    for (size_t size = 0; size < myVec.size(); ++size)
    {
        myVec[size]->getVal();
    }

    return 0;
}

但是,我在编译时遇到了一个愚蠢的错误:

“错误:类型'void'和'void'到二进制'运算符&lt;'的操作数无效   return b1-&gt; getVal()&lt; B2-&GT; GETVAL();“

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

问题在于

void getVal() {cout << x << endl; };

它返回void而不是某个值。

return b1->getVal() < b2->getVal();中使用它时,归结为return void < void;无法编译。

您应该可以将其更改为

int getVal() { return x; };