作为课程项目,我正在构建一个具有不同种类奖品的彩票机模拟器。无法对C++中的类/对象的向量成员变量进行排序
我有一个名为LotteryTicket
的类,其中包含一个vector<int> luckyNumbers
作为其私有成员变量之一。为了访问它,我定义了一个get函数,如下所示:
vector<int> LotteryTicket::getLuckyNumbersList()
{
return luckyNumbers;
}
我需要做的事情之一是检查获奖票。 “铜牌”获胜者是设法猜出所有正确数字的人,但没有按照正确的顺序。换句话说,这些集合必须匹配。为了做到这一点,我想这两个门票(中奖号码和玩家的数字)进行排序,然后检查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
函数应对数组进行排序并使其超出函数的范围。
请不要使用xor swap方法,它在可读代码中没有位置,几乎肯定不会比temp变量更快。 – paxdiablo 2014-11-25 02:28:08
@paxdiablo这听起来像是一个很好的建议,我应该遵循。谢谢 – 2014-11-25 02:30:18