对向量进行排序

发布于 2024-12-27 01:51:22 字数 2106 浏览 2 评论 0原文

我正在制作一个扑克评估器,对于直方图,我使用的是向量<对>保存数据。现在我只能对它们进行排序,无论我尝试什么,我都会遇到编译器错误。

如有任何帮助,我们将不胜感激,谢谢。

class Histogram {
private:
    vector< pair<int,int> > _rankHistogram;
    vector< pair<int,int> > _suitHistogram;

    void add(int rank, int suit) {
        for (int i=0; i < _rankHistogram.size(); i++)
            if (_rankHistogram[i].first == rank) { _rankHistogram[i].second++; break; }

        for (int i=0; i < _suitHistogram.size(); i++)
            if (_suitHistogram[i].first == suit) { _suitHistogram[i].second++; break; }
    }
    bool cmp_big_first (pair<int,int> i, pair<int,int> j) { return i.second < j.second; }

public:
    Histogram() {
        _rankHistogram.push_back( make_pair(TWO, 0) );
        _rankHistogram.push_back( make_pair(THREE, 0) );
        _rankHistogram.push_back( make_pair(FOUR, 0) );
        _rankHistogram.push_back( make_pair(FIVE, 0) );
        _rankHistogram.push_back( make_pair(SIX, 0) );
        _rankHistogram.push_back( make_pair(SEVEN, 0) );
        _rankHistogram.push_back( make_pair(EIGHT, 0) );
        _rankHistogram.push_back( make_pair(NINE, 0) );
        _rankHistogram.push_back( make_pair(TEN, 0) );
        _rankHistogram.push_back( make_pair(JACK, 0) );
        _rankHistogram.push_back( make_pair(QUEEN, 0) );
        _rankHistogram.push_back( make_pair(KING, 0) );
        _rankHistogram.push_back( make_pair(ACE, 0) );

        _suitHistogram.push_back( make_pair(SPADES, 0) );
        _suitHistogram.push_back( make_pair(HEARTS, 0) );
        _suitHistogram.push_back( make_pair(DIAMONDS, 0) );
        _suitHistogram.push_back( make_pair(CLUBS, 0) );
    }

    void operator() (Card &c) { add(c.getRank(), c.getSuit()); }

    void h_sort() {
        sort(_rankHistogram.begin(), _rankHistogram.end(), cmp_big_first);
    }

    void h_print() {
        for (int i=0; i<_rankHistogram.size(); i++) {
            cout << Card::rankToString(_rankHistogram[i].first) << "\t\t" << _rankHistogram[i].second << endl;
        }
    }

I am making a poker evaluator, and for the histogram I am using vector< pair > to hold data. Now I am stuck on sorting them, whatever I try I get compiler error.

Any help is appreciated, thanks.

class Histogram {
private:
    vector< pair<int,int> > _rankHistogram;
    vector< pair<int,int> > _suitHistogram;

    void add(int rank, int suit) {
        for (int i=0; i < _rankHistogram.size(); i++)
            if (_rankHistogram[i].first == rank) { _rankHistogram[i].second++; break; }

        for (int i=0; i < _suitHistogram.size(); i++)
            if (_suitHistogram[i].first == suit) { _suitHistogram[i].second++; break; }
    }
    bool cmp_big_first (pair<int,int> i, pair<int,int> j) { return i.second < j.second; }

public:
    Histogram() {
        _rankHistogram.push_back( make_pair(TWO, 0) );
        _rankHistogram.push_back( make_pair(THREE, 0) );
        _rankHistogram.push_back( make_pair(FOUR, 0) );
        _rankHistogram.push_back( make_pair(FIVE, 0) );
        _rankHistogram.push_back( make_pair(SIX, 0) );
        _rankHistogram.push_back( make_pair(SEVEN, 0) );
        _rankHistogram.push_back( make_pair(EIGHT, 0) );
        _rankHistogram.push_back( make_pair(NINE, 0) );
        _rankHistogram.push_back( make_pair(TEN, 0) );
        _rankHistogram.push_back( make_pair(JACK, 0) );
        _rankHistogram.push_back( make_pair(QUEEN, 0) );
        _rankHistogram.push_back( make_pair(KING, 0) );
        _rankHistogram.push_back( make_pair(ACE, 0) );

        _suitHistogram.push_back( make_pair(SPADES, 0) );
        _suitHistogram.push_back( make_pair(HEARTS, 0) );
        _suitHistogram.push_back( make_pair(DIAMONDS, 0) );
        _suitHistogram.push_back( make_pair(CLUBS, 0) );
    }

    void operator() (Card &c) { add(c.getRank(), c.getSuit()); }

    void h_sort() {
        sort(_rankHistogram.begin(), _rankHistogram.end(), cmp_big_first);
    }

    void h_print() {
        for (int i=0; i<_rankHistogram.size(); i++) {
            cout << Card::rankToString(_rankHistogram[i].first) << "\t\t" << _rankHistogram[i].second << endl;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不知所踪 2025-01-03 01:51:22

您需要将其设置为static cmp_big_first。该方法不是静态的,它采用隐式 this 参数(属于类类型),这对您的使用没有意义。

You need to make it static cmp_big_first. Without being static, the method takes an implicit this parameter (of the class type), which does not make sense for your usage.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文