#include <iostream>
#include <list>
using namespace std;
class CData {
public:
CData (int x = 0) { data = x; }
void set (int x) { data = x; }
int get (void) { return data ; }
// 방법 1: 비교를 위한 함수를 만든다.
int operator()( CData &lhv, CData &rhv) const { return (lhv.get() > rhv.get()); }
// 방법 2: < 연산자를 오버로딩 한다.
int operator<( CData &rhv) const { return (this->data < rhv.get()); }
private:
int data;
};
void process(void);
void prinfList( list<CData> myList );
int main (int argc, char **argv)
{
process();
getchar();
return 0;
}
void process (void)
{
list<CData> myData;
myData.push_front(10);
myData.push_front(17);
myData.push_front(11);
myData.push_front(1);
myData.push_front(20);
prinfList( myData );
// STL의 list는 제너릭한 sort를 사용할 수 없다.
// 멤버함수를 호출하면 < 연산자를 비교 함수로 쓴다.
myData.sort(); // method 2
prinfList( myData );
// 직접 비교 함수를 넣을 수도 있다.
myData.sort(CData()); // metod 1
prinfList( myData );
}
void prinfList( list<CData> myList )
{
list<CData> :: iterator iter;
for (iter = myList.begin(); iter != myList.end(); iter++)
cout << iter->get() << " ";
cout << endl;
}
'Coding > CPP 삽질기' 카테고리의 다른 글
[CPP] Linux Thread Example Code (0) | 2008.12.14 |
---|---|
Copy & Paste 신공 (0) | 2008.03.08 |
연산자 우선 순위 (0) | 2008.01.13 |