首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stable_sort in C++

stable_sort in C++
EN

Stack Overflow用户
提问于 2015-09-02 18:09:39
回答 1查看 478关注 0票数 0

我试图使用stable_sort对指针向量进行排序

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

代码语言:javascript
复制
#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;
}

但是,在编译它时,我会得到一个错误:

错误:对二进制的'operator<‘返回b1->getVal() getVal()的类型'void’和'void‘的无效操作数;

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-02 18:13:29

问题在于

代码语言:javascript
复制
void getVal() {cout << x << endl; };

它返回void而不是某些值。

当您在return b1->getVal() < b2->getVal();中使用它时,它可以归结为不编译的return void < void;

您应该能够将其更改为

代码语言:javascript
复制
int getVal() { return x; };
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32360266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档