[ Programing ]/STL & Booster

[STL] 다중 정렬시 주로 사용 하는 stable_sort()

Mister_Q 2010. 8. 24. 14:17
 
// stable_sort( &array[start], &array[end], bool (function*)() )
// 처음 부터 끝까지  bool조건으로 정렬
 
#include <vector>
#include <algorithm> 
 
struct _sItemInfo
{    
     int   nType;
     int   nSubType;
     int   nLevel;
 
    _sItemInfo() : nType( 0 ), nSubType( 0 ), nLevel( 0 )
    {}
};
 
bool SortCredit( const _sItemInfo& lhs, const _sItemInfo& rhs )
{
      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;
}
 
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()를 주로 사용. ( 퀵 정렬 이었나?! 다중 정렬에 효율적... )