作爲課程項目,我正在構建一個具有不同種類獎品的彩票機模擬器。無法對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