[ Programing ]/STL & Booster
[STL] 다중 정렬시 주로 사용 하는 stable_sort()
Mister_Q
2010. 8. 24. 14:17
// stable_sort( &array[start], &array[end], bool (function*)() )
// 처음 부터 끝까지 bool조건으로 정렬
// 처음 부터 끝까지 bool조건으로 정렬
#include <vector>
#include <algorithm>
#include <algorithm>
struct _sItemInfo
{
int nType;
{
int nType;
int nSubType;
int nLevel;
int nLevel;
_sItemInfo() : nType( 0 ), nSubType( 0 ), nLevel( 0 )
{}
};
{}
};
bool SortCredit( const _sItemInfo& lhs, const _sItemInfo& rhs )
{
bool swap = false;
{
bool swap = false;
if( lhs.nType < rhs.nType ) swap = true;
if( lhs.nType == rhs.nType && lhs.nSubType < rhs.nSubType ) swap = true;
if( lhs.nType == rhs.nType && lhs.nSubType == rhs.nLevel && lhs.nType < rhs.nLevel ) swap = true;
return swap;
}
if( lhs.nType == rhs.nType && lhs.nSubType < rhs.nSubType ) swap = true;
if( lhs.nType == rhs.nType && lhs.nSubType == rhs.nLevel && lhs.nType < rhs.nLevel ) swap = true;
return swap;
}
void main() {
vector<_sItemInfo> vecStock;
_sItemInfo sInfo;
for( long int i = 0; i < 5; i++ )
{
{
sInfo.nType = i;
sInfo.nSubType = i +1;
sInfo.nLevel = i +2;
vecStock.push_back( sInfo[i] ); }
stable_sort( vecStock.begin(), vecStock.end(), SortCredit );
}
- 처음 부터 끝까지 bool조건로 정렬
- 일반 정렬에도 사용하나, 다중 정렬 사용시 stable_sort()를 주로 사용. ( 퀵 정렬 이었나?! 다중 정렬에 효율적... )