作为一个课程项目,我正在建立一个有各种奖品的彩票机模拟器。
我有一个名为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
函数应对数组进行排序,使其超出函数范围。
答案 0 :(得分:3)
vector<int> LotteryTicket::getLuckyNumbersList()
您在getLuckyNumbersList()
返回时制作了副本,因为您没有返回引用。
转而使用以下内容。
vector<int>& LotteryTicket::getLuckyNumbersList()