2017-11-16 4 views
0

私はブラックジャックのゲームを作っていて、ユーザーが処理する手として機能する配列を作成しました。手を数字順に並べ替えるように並べ替えることができれば、ユーザーがどのような手の形をしているのかを簡単に判断できます。ここに私のカードのsturct:構造体の配列を並べ替える(カード)

struct ACard{ 
    int num; 
    const char *pic; 
}; 

私はint numで配列をソートしたいと思います。ソートを完了するために単純な挿入ソートを使用しようとしましたが、そうするために演算子をオーバーロードする必要があると信じていますが、前にこのような構造体をオーバーロードしていないので、ここで私はこれまで、ソートのために持っているものです。

 int i,j; 
     ACard key; 
     for(int i = 1; i < 5; i++){ 
      key = userHand[i].num; 
      j = i - 1; 

      while(j >= 0 && userHand[j].num > key){ 
       userHand[j + 1] = userHand[j]; 
       j = j - 1; 
      } 
      userHand[j + 1] = key; 
     } 

*注userHandは、私は並べ替えたいACard'sの配列です。

+2

ACARDを格納するのに 'std :: array'または' std :: vector'を使用せず、カスタムコンパレータで 'std :: sort()'を使う理由はありますか? –

+1

比較ラムダで 'std :: sort'を使わないのはなぜですか? – Quentin

+0

私はstd :: sort()に慣れていません、説明できますか? – zsloan112

答えて

2

STLコンテナを使用すると、std::sort機能を使用できます。最初の2つの引数はソートされる要素の範囲を定義します。 3番目の引数は、カスタム要素の比較に使用されるLessThan関数を定義します(そのためにラムダ式を使用できます)。

+1

正しいアイデア。正しいコードのように見えます。しかし、あなたがしたことの説明が欠けている。このコードは自己文書化の近くで気になるので、あまり必要はありません。 – user4581301