2016. 12. 2. 15:02ㆍIT-개발/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 |