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
