図1に示すように、結果はソート - 牛オフ

タイトル説明

検索とソート

タイトル:任意(ユーザー、結果)のシーケンスを入力は、同じ結果がハイからロー又は高次低グレードから得ることができる
前のエントリ配置規則に従って処理しました。

例:
ジャック70
ピーター96
トム・70
・スミス67

低いスコアとハイ 
ピーター96 
ジャック70 
トム・70 
・スミス67

ローからハイへ

スミス67

ジャック70 

トム・70 
ピーター・96

 

説明を入力します。

まず、あなたが人をソートしたい番号を入力し、複数行を入力し、スペースで区切って自分の名前や成果を、再入力した(昇順)ソート(降順)メソッド0または1を入力してください

出力説明:

名前とスコア、名前とスコアの出力に応じて、指定された方法との間の空間によって分離されました

例:

入力:

3
0
牙90
ヤン50
寧70

出力:

90牙
寧70
ヤン50

ソリューション


複数の条件スケジューリング問題がある1、。まず、文字列と整数の変数を保持する構造体を作成する必要があります

2、降順、昇順に従ってstable_sort()を使用。

1の#include <iostreamの>
 2の#include <アルゴリズム>
 3の#include < ストリング >
 4の#include <ベクトル>
 5  使って 名前空間STDを、
6  
7のtypedef 構造体STU
 8  {
 9      名;
10      int型のグレード。
11  }学生。
12  
13  のint CMP1(生徒A、生徒B)
 14  {
 15      リターン a.grade> b.grade。
16  }
 17  
18  INTCMP2(生徒A、生徒B)
 19  {
 20      リターン a.grade < b.grade。
21  }
 22  
23  
24  のint main()の
 25  {
 26      int型のカウント= 0、CMP = 0 27      学生の。
28      int型のグレード。
29      文字列名。
30      INT N = 数えます。
31      一方(CIN >>数えるCMP)の
 32      {
 33          ベクター<学生> stuVect。
34          しばらく(count-- 35          {
 36              CIN >>名>> グレード。
37              s.name = 名。
38              s.grade = グレード;
39              stuVect.push_back(S);
40          }
 41              であれば(CMPが== 0 42                  stable_sort(stuVect.begin()、stuVect.end()、CMP1)。
43              であれば(CMPの== 1 44                  stable_sort(stuVect.begin()、stuVect.end()、CMP2)。 
45          
46          のための(自動それがstuVect.begin()=;それを= stuVect.end();!それ++47          COUT <<それ- >名前<< '  ' <<それは- >グレード<< てendl;
48      }
 49      リターン 0 50 }

概要

多くの問題に遭遇した、と私は疑問ヘッドを通して新しい知識の多くを実現

1、ソート()関数stable_sortある()関数

  • ヘッダを必要とする<アルゴリズム>
  • 構文の説明:ソート(開始、終了、CMP)stable_sort(、、CMPを終了し始める)、CMP引数ことはできない、デフォルト以外の降順が存在しない場合。
  • stable_sort()関数は、ソートされた不変の元の順序に等しい要素の相対保証します
  • この関数は、2つのパラメータまたは3つのパラメータを渡すことができます。最初のパラメータがソートされる第1のアドレス範囲であり、第二の引数は、次のセクションの終了アドレスのアドレスです。すなわちA、B)、ソート間隔です。
  • 簡潔には、[0]〜[99]の行は、デフォルトのソート非降順にソート(A + 100)を書き込み、要素をソート乃至[100] INT配列は、あります。
  • ベクトル変数の場合で、ソート(v.begin()、v.end())

ここでは、ノートのcmp関数のパラメータを取ります。

比較関数 - それは動作の定義のデータ型よりも小さくない場合、またはソート順を変更し、第3のパラメータを使用する必要があります。

比較関数は、独自の定義の関数であり、戻り値はブール値または整数である、それは関係のようなものが何であるかを指定し、「より少ないです。」ただ、降順で整数の配列をしたい、あなたは比較関数CMPを定義することができます

1  BOOL CMP(INT A、INT B)
 2  {
 3     リターン A> B。
4 }

図2に示すように、コンテナアプリケーションベクトル

  • 最後の一backでデータ配列を追加します
  • pop_back最後のデータ配列を削除
  • 得られた位置データの数
  • ヘッドポインタの配列は、与えることを始めます
  • +1の最後のセルのアレイへのポインタを取得するために終了

3、アクセスベクトル 

1      // 反復子が出力データコンテナ
2      ベクトル< 整数 > :: ITをイテレータ; //はベクトル容器、効果アクセスするイテレータ宣言:横断ポインティングベクトルまたはコンテナ要素
。3      (IT = obj.begin ();! obj.end ITは、()=; ITを++ 。4      {
 5          COUT * IT << << "  " ;
 6      }

 

 

  

 

おすすめ

転載: www.cnblogs.com/jiashun/p/newcode.html