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
