STL - list - Sample (3)

2016. 12. 2. 15:02IT-개발/C및C++

반응형

// remove_if 사용 예


#include <iostream>

#include <list>

using namespace std;


// 20 이상 30 미맊이면 true

template <typename T> class Is_Over20_Under30: public std::unary_function <T,bool>

{

public:

bool operator( ) ( T& val )

{

return ( val >= 20 && val < 30 );

}

};


void main()

{

list< int > list1;

list1.push_back(10);

list1.push_back(20);

list1.push_back(25);

list1.push_back(30);

list1.push_back(34);

// 20 이상 30 미만은 삭제한다.

list1.remove_if( Is_Over20_Under30< int >() );

list< int >::iterator iterEnd = list1.end();

for(list< int >::iterator iterPos = list1.begin();

iterPos != iterEnd;

++iterPos )

{

cout << "list 1 : " << *iterPos << endl;

}

}



// Sort 사용법


#include <iostream>

#include <list>

using namespace std;

// 함수 객체 정의

template <typename T> struct COMPARE_ITEM

{

bool operator()( const T l, const T r ) const

{

// 정렬 시에는 올림 차순으로된다. 내림 차순으로 하고 싶으면 < 에서 > 로

// 변경하면 된다.

return l.ItemCd < r.ItemCd;

}

};


// 아이템 구조체

struct Item

{

Item( int itemCd, int buyMoney )

{

ItemCd = itemCd;

BuyMoney = buyMoney;

}

int ItemCd; // 아이템 코드

int BuyMoney; // 판매 금액

};


void main()

{


list< int > list1;

list1.push_back(20);

list1.push_back(10);

list1.push_back(35);

list1.push_back(15);

list1.push_back(12);

cout << "sort 올림차순" << endl;


// 올림 차순으로 정렬한다.

list1.sort();

list< int >::iterator iterEnd = list1.end();

for(list< int >::iterator iterPos = list1.begin();

iterPos != iterEnd;

++iterPos )

{

cout << "list 1 : " << *iterPos << endl;

}


cout << endl << "sort 내림차순" << endl;


// 내림 차순으로 정렬한다.

list1.sort( greater< int >() );

iterEnd = list1.end();

for(list< int >::iterator iterPos = list1.begin();

iterPos != iterEnd;

++iterPos )

{

cout << "list 1 : " << *iterPos << endl;

}



cout << endl << "sort - 사용자가 정의한 방식으로 정렬" << endl;


list< Item > Itemlist;

Item item1( 20, 100 ); Itemlist.push_back( item1 );

Item item2( 10, 200 ); Itemlist.push_back( item2 );

Item item3( 7, 300 ); Itemlist.push_back( item3 );


// 정렬한다.

Itemlist.sort( COMPARE_ITEM< Item >() );

list< Item >::iterator iterEnd2 = Itemlist.end();

for(list< Item >::iterator iterPos = Itemlist.begin();

iterPos != iterEnd2;

++iterPos )

{

cout << "Itemlist : " << iterPos->ItemCd << endl;

}

}




'IT-개발 > C및C++' 카테고리의 다른 글

STL - Deque  (0) 2017.01.04
문법 - C++ - static_cast, dynamic_cast, const_cast, reinterpret_cast  (0) 2016.12.02
STL - list - Sample (2)  (0) 2016.12.02
STL - list - Sample (1)  (0) 2016.12.02
STL - iterator 사용하기 sample  (0) 2016.12.01