C/C++ STL partial_sort
C/C++ ソート
STL algrithm partial_sort
例えば、100件中 上(下)位10件まで…等と言った集計に利用可能。元データを壊したくない場合、partial_sort_copy を利用可能。
※注:要素全体から指定個数の上位・下位データを前方へ置き換える。
ソートテストで使用した関数サンプル
※このサンプルは、main_sort.cpp をメインとして分割(分割コンパイル)された一部。メイン、ヘッダー、共通関数等は、分割コンパイルの頁を参照。
sub_sort_pat.cpp
//#include <iostream> //#include <time.h> //#include <string> #include <vector> #include <algorithm> #include <functional> // プレディケート less<Type>() greater<Type>() using namespace std; #include "main_sort.h" // ----------------------------------------- // ソート関数 // ----------------------------------------- /***************************** partial_sort 1,2,3 *****************************/ void pat_sort1(vector < int > & v) { // 参考:3.8850 // dsp_arr(&v[0], (int)v.size()); // ---------------------------- vector < int > ::iterator first = v.begin(); vector < int > ::iterator middle = first + PARTIAL_SIZE; vector < int > ::iterator last = v.end(); // ---------------------------- partial_sort(first, middle, last); // partial_sort(first, middle, last, greater<int>()); // ---------------------------- // dsp_arr(&v[0], (int)v.size()); } void pat_sort2(vector < int > & v) { // 参考:4.0060 // dsp_arr(&v[0], (int)v.size()); // ---------------------------- vector < int > ::iterator first = v.begin(); vector < int > ::iterator middle = first + PARTIAL_SIZE; vector < int > ::iterator last = v.end(); // ---------------------------- partial_sort(first, middle, last, asc1_cmp); // partial_sort(first, middle, last, des1_cmp); // ---------------------------- // dsp_arr(&v[0], (int)v.size()); } void pat_sort3(vector < int > & v) { // 参考:4.0360 // dsp_arr(&v[0], (int)v.size()); // ---------------------------- vector < int > ::iterator first = v.begin(); vector < int > ::iterator middle = first + PARTIAL_SIZE; vector < int > ::iterator last = v.end(); // ---------------------------- partial_sort(first, middle, last, asc2_cmp()); // partial_sort(first, middle, last, des2_cmp()); // ---------------------------- // dsp_arr(&v[0], (int)v.size()); }※一部ソートだが決して高速な訳ではない。(要素数の1/10で実行)
※横に長くなってしまったためイテレータへ置き換えた。動作確認済み。
▲上へ [ 編集 ]
リンク
内部リンク
- C/C++ C++/CLI C# 関連
- VC++ 2005 Express のインストール
- C/C++ の簡単なプログラム例
- C/C++ ソート(並べ替え)
- C/C++ テストの実行
- C/C++ STL(Standard Template Library)
- 変数・定数
- プログラムの分割/ダイナミックリンクライブラリ など
- その他
- C/C++ その他::書式文字/ESC code など
- VB2005リファレンス(覚え書き)
- SQL文:SQLステートメント
- VBA(VisualBasic for Applications)
外部リンク
- 現在ありません
▲上へ
2008年07月21日(月) 21:19:13 Modified by cafeboy1