タイトル説明
検索とソート
タイトル:任意(ユーザー、結果)のシーケンスを入力は、同じ結果がハイからロー又は高次低グレードから得ることができる
前のエントリ配置規則に従って処理しました。
例:
ジャック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 }