struct ITEMSORT
{
int slot;
int index;
int type;
int subType;
int option;
ITEMSORT()
{
memset( this, 0x00, sizeof(ITEMSORT) );
}
bool IsValid() const
{
if( 0 > index ) return false;
//if( 0 > type ) return false;
//if( 0 > subType ) return false;
}
};
/* functor, item's sort condition */
struct lt_ITEMSORTBASE
{
bool operator()( const ITEMSORT& lhs, const ITEMSORT& rhs ) const
{
// empty slot check
if( 0 > lhs.IsValid() ) return false;
if( 0 > rhs.IsValid() ) return true;
//return ( lhs.type < rhs.type );
// 1) Type sort
if( lhs.type < rhs.type ) return true;
else if( lhs.type > rhs.type ) return false;
// 2) SubType sort
if( lhs.subType < rhs.subType ) return true;
else if( lhs.subType > rhs.subType ) return false;
// 3) Option sort
if( lhs.option < rhs.option ) return true;
else if( lhs.option > rhs.option ) return false;
return false;
}
};
...
std::list<ITEMSORT> sortItemList;
ITEMSORT itemCond;
// item information data read
for( int i = 0; i < MAX_INVEN_SLOT; ++i )
{
if( !ReadItem( itemCond, page, i ) ) return false;
sortItemList.push_back( itemCond );
}
// sorting
sortItemList.sort( lt_ITEMSORTBASE() );
// sorting item information data output
for( int i = 0; i < MAX_INVEN_SLOT; ++i )
{
const ITEMSORT &sortItemCond= sortItemList.front();
if( !SetItem( i, sortItemCond) )
{
printf( "FAIL. sorting item input error. item index(%d) \n", sortItemCond.index );
}
sortItemList.pop_front();
}
...
※ sortItemList.sort( lt_ITEMSORTBASE() );
function struct 구조체를 만들어 해당 조건을 만든 후 std::list 의 sort() 인자에 넣으면 설정한 function struct의 조건으로 정렬 한후 해당 결과를 출력 하면 된다.
{
int slot;
int index;
int type;
int subType;
int option;
ITEMSORT()
{
memset( this, 0x00, sizeof(ITEMSORT) );
}
bool IsValid() const
{
if( 0 > index ) return false;
//if( 0 > type ) return false;
//if( 0 > subType ) return false;
}
};
/* functor, item's sort condition */
struct lt_ITEMSORTBASE
{
bool operator()( const ITEMSORT& lhs, const ITEMSORT& rhs ) const
{
// empty slot check
if( 0 > lhs.IsValid() ) return false;
if( 0 > rhs.IsValid() ) return true;
//return ( lhs.type < rhs.type );
// 1) Type sort
if( lhs.type < rhs.type ) return true;
else if( lhs.type > rhs.type ) return false;
// 2) SubType sort
if( lhs.subType < rhs.subType ) return true;
else if( lhs.subType > rhs.subType ) return false;
// 3) Option sort
if( lhs.option < rhs.option ) return true;
else if( lhs.option > rhs.option ) return false;
return false;
}
};
...
std::list<ITEMSORT> sortItemList;
ITEMSORT itemCond;
// item information data read
for( int i = 0; i < MAX_INVEN_SLOT; ++i )
{
if( !ReadItem( itemCond, page, i ) ) return false;
sortItemList.push_back( itemCond );
}
// sorting
sortItemList.sort( lt_ITEMSORTBASE() );
// sorting item information data output
for( int i = 0; i < MAX_INVEN_SLOT; ++i )
{
const ITEMSORT &sortItemCond= sortItemList.front();
if( !SetItem( i, sortItemCond) )
{
printf( "FAIL. sorting item input error. item index(%d) \n", sortItemCond.index );
}
sortItemList.pop_front();
}
...
※ sortItemList.sort( lt_ITEMSORTBASE() );
function struct 구조체를 만들어 해당 조건을 만든 후 std::list 의 sort() 인자에 넣으면 설정한 function struct의 조건으로 정렬 한후 해당 결과를 출력 하면 된다.
'[ Programing ] > STL & Booster' 카테고리의 다른 글
bitset (0) | 2013.05.21 |
---|---|
[STL]string에서의 trim() 구현 (0) | 2013.05.21 |
[STL] member map (0) | 2011.07.20 |
[STL] std::pair< template T1, template T2 > 설명 및 활용. (중복 데이터 체크) (0) | 2011.07.08 |
STL 문자열 대소문자 변환 std::transform() (0) | 2011.05.27 |