-3
我想排序類指針的雙引擎取決於我的重載運算符<,但排序無法正常工作。C++重載運算符的類指針的排隊<
程序顯示這樣的:
Suit: 1 Number: 1
Suit: 1 Number: 2
...
Suit: 1 Number: 13
Suit: 2 Number: 1
...
但排序後它應該是這樣的:
Suit: 1 Number: 2
Suit: 1 Number: 3
...
Suit: 1 Number: 13
Suit: 1 Number: 1
Suit: 2 Number: 2
...
這裏是我的代碼:
class CCard
{
private:
int m_suit;
int m_number;
public:
CCard(int suit, int number) : m_suit(suit), m_number(number) {}
ostream& Output(ostream& toStream)
{
return toStream<<"Suit: "<<m_suit<<" Number: "<<m_number<<endl;
}
bool operator < (const CCard *card)const
{
if(m_suit < card->m_suit) { return true; }
else if(m_suit > card->m_suit) { return false; }
else
{
if(m_number == card->m_number) { return false; }
else
{
if(m_number == 1) { return false; }
else if(card->m_number == 1) { return true; }
else { return m_number < card->m_number; }
}
}
}
};
int main()
{
deque<CCard*> test;
for(int i = 1; i <= 4; i++)
{
for(int j = 1; j <= 13; j++)
{
test.push_back(new CCard(i,j));
}
}
sort(test.begin(),test.end());
for(deque<CCard*>::iterator it = test.begin(); it != test.end(); ++it)
{
(*it)->Output(cout);
}
system("pause");
return 0;
}
任何想法將是有益的。
你爲什麼使用指針?只需使用'std :: deque'並擺脫使用'new'。你可能來自Java背景嗎? –
NathanOliver
「aaaaaaaaaa」呢?是你的輸出的一部分還是你故意降低質量? –
@MarcusMüller大概是對自動代碼防止問題進行黑客攻擊。 –