C/C++ STL partial_sort_copy
C/C++ ソート
STL algrithm partial_sort_copy
partial_sort の別配列抽出コピー版。別配列抽出であるが別に早い訳でもない。元データを破壊しないので、そうした一時抽出用途に便利。抽出要素数が多いと当然メモリ消費もその分増える。
ソートテストで使用した関数サンプル
※このサンプルは、main_sort.cpp をメインとして分割(分割コンパイル)された一部。メイン、ヘッダー、共通関数等は、分割コンパイルの頁を参照。
sub_sort_pcp.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_copy 1,2,3 *****************************/ void pcp_sort1(vector < int > & v) { // 参考:4.8170 vector < int > ::iterator first = v.begin(); vector < int > ::iterator middle = first + PARTIAL_SIZE; vector < int > ::iterator last = v.end(); // ---------------------------- vector < int > result(PARTIAL_SIZE); vector < int > ::iterator r_first = result.begin(); vector < int > ::iterator r_middle = r_first + PARTIAL_SIZE; vector < int > ::iterator r_last = result.end(); // ---------------------------- // dsp_arr(&v[0], (int)v.size()); // ---------------------------- partial_sort_copy(first, last, r_first, r_middle); // partial_sort_copy(first, last, r_first, r_middle, greater<int>()); // ---------------------------- // dsp_arr(&result[0], PARTIAL_SIZE); } void pcp_sort2(vector < int > & v) { // 参考:4.4360 vector < int > ::iterator first = v.begin(); vector < int > ::iterator middle = first + PARTIAL_SIZE; vector < int > ::iterator last = v.end(); // ---------------------------- vector < int > result(PARTIAL_SIZE); vector < int > ::iterator r_first = result.begin(); vector < int > ::iterator r_middle = r_first + PARTIAL_SIZE; vector < int > ::iterator r_last = result.end(); // ---------------------------- // dsp_arr(&v[0], (int)v.size()); // ---------------------------- partial_sort_copy(first, last, r_first, r_middle, asc1_cmp); // partial_sort_copy(first, last, r_first, r_middle, des1_cmp); // ---------------------------- // dsp_arr(&result[0], PARTIAL_SIZE); } void pcp_sort3(vector < int > & v) { // 参考:4.8770 vector < int > ::iterator first = v.begin(); vector < int > ::iterator middle = first + PARTIAL_SIZE; vector < int > ::iterator last = v.end(); // ---------------------------- vector < int > result(PARTIAL_SIZE); vector < int > ::iterator r_first = result.begin(); vector < int > ::iterator r_middle = r_first + PARTIAL_SIZE; vector < int > ::iterator r_last = result.end(); // ---------------------------- // dsp_arr(&v[0], (int)v.size()); // ---------------------------- partial_sort_copy(first, last, r_first, r_middle, asc2_cmp()); // partial_sort_copy(first, last, r_first, r_middle, des2_cmp()); // ---------------------------- // dsp_arr(&result[0], PARTIAL_SIZE); }※result(PARTIAL_SIZE) は、コピー先配列。vector としてるが、通常配列でも良いかも...
※イテレータ利用へ変更した。大分長くなってしまった。
※partial_sort の別配列へ抽出コピー版。別配列抽出であるが、別に早い訳でもない。
▲上へ [ 編集 ]
リンク
内部リンク
- 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:14:13 Modified by cafeboy1