クラスポインタの両端キューを並べ替えるには、オーバーロードされた演算子<に依存しますが、ソートが正しく機能しません。C++は、オーバーロード演算子を持つクラスポインタのdequeを返します。<
プログラムの表示は、この:
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おそらく自動的なコードのみの質問防止の事柄をハックするでしょう。 –