无法在C ++中对类/对象的矢量成员变量进行排序

时间:2014-11-25 02:24:09

标签: c++ sorting vector scope pass-by-reference

作为一个课程项目,我正在建立一个有各种奖品的彩票机模拟器。

我有一个名为LotteryTicket的类,它将vector<int> luckyNumbers作为其私有成员变量之一。为了访问它,我已经定义了一个get函数如下:

vector<int> LotteryTicket::getLuckyNumbersList()
{
    return luckyNumbers;
}

我需要做的一件事就是检查中奖彩票。 A&#34;青铜&#34;获胜者是设法猜测所有正确数字但不按正确顺序排列的人。换句话说,集合必须匹配。为了做到这一点,我想对两张门票(中奖号码和玩家的号码)进行排序,然后将1检查为1。

我尝试使用以下功能对它们进行排序:

void LotteryMachine::sortTicket(LotteryTicket& ticket)
{
    for(int i = ticket.getLuckyNumbersList().size()-1; i >= 0; i--) {
        for(int j = 0; j < i; j++) {
            if(ticket.getLuckyNumbersList()[j] > ticket.getLuckyNumbersList()[j+1])
                swap(ticket.getLuckyNumbersList()[j], ticket.getLuckyNumbersList()[j+1]);
        }
    }

    cout << endl << "Sorted ticket " << ticket.getTicketNumber() << ":";
    printTicket(ticket);
}

//sorting by bitwise operations
void LotteryMachine::swap(int& a, int& b)
{
    a ^= b;
    b ^= a;
    a ^= b;
}

我有cout作为测试,看看我的矢量是否确实排序。到目前为止没有运气。我怀疑我在某些时候失去了参考,但我不确定在哪里......或者我可能会在我的语法中搞砸了所有这些长点符号返回...

对于其他上下文,从函数中调用sortTicket(LotteryTicket&)函数,该函数检查票证是否为铜牌获胜者。提到的函数从不同的函数接收ticket参数...即传递参数的长链,所有都通过引用调用(如果需要,我可以粘贴更多代码。)

有什么想法? sortTicket函数应对数组进行排序,使其超出函数范围。

1 个答案:

答案 0 :(得分:3)

vector<int> LotteryTicket::getLuckyNumbersList()

您在getLuckyNumbersList()返回时制作了副本,因为您没有返回引用。

转而使用以下内容。

vector<int>& LotteryTicket::getLuckyNumbersList()