#include<iostream>
#include<algorithm>
using namespace std;
///////////////////////////////////////////////////////////////////////////////
// STL 의 sort() 는 마지막 인자가 T로 되어 있다.
//
//
//
///////////////////////////////////////////////////////////////////////////////
// 아래 코드의 단점 인라인 처리가 안된다?!
/*
int cmp1(int a, int b) {return a-b;}
int cmp2(int a, int b) {return b-a;}
int main(){
int x[10] = {1,2,3,4,5,6,7,8,9,10};
sort(x,x+10,cmp1); //sort(int *, int *, int(*)(int,int)) 함수 생성
sort(x,x+10,cmp2); //sort(int *, int*, int(*)(int,int))
}
*/
//////////////////////////////////////////////////////////////////////////////
// 이미 있는 STL 이다!!
// #include <functional> 다있다! 다있따! //less<> , greater<>
////////////////////////////////////////////////////////////////////////////
template<typename T>struct less{
bool operator()(T a,T b){return a<b;}
};
struct greater {bool operator()(int a, int b){return a>b;}};
int main(){
int x[10] = {1,2,3,4,5,6,7,8,9,10};
less<int> cmp1;
greater cmp2;
sort(x,x+10,cmp1); //sort(int *, int *, less) 함수 생성
sort(x,x+10,cmp2); //sort(int *, int*, greater) 함수 생성
}
=====================================================================
함수객체이야기
=====================================================================
#include<iostream>
#include<algorithm>
using namespace std;
///////////////////////////////////////////////////////////////////////////////
// STL 의 sort() 는 마지막 인자가 T로 되어 있다.
//
//
//
///////////////////////////////////////////////////////////////////////////////
// 아래 코드의 단점 인라인 처리가 안된다?!
/*
int cmp1(int a, int b) {return a-b;}
int cmp2(int a, int b) {return b-a;}
int main(){
int x[10] = {1,2,3,4,5,6,7,8,9,10};
sort(x,x+10,cmp1); //sort(int *, int *, int(*)(int,int)) 함수 생성
sort(x,x+10,cmp2); //sort(int *, int*, int(*)(int,int))
}
*/
//////////////////////////////////////////////////////////////////////////////
// 이미 있는 STL 이다!!
// #include <functional> 다있다! 다있따! //less<> , greater<>
////////////////////////////////////////////////////////////////////////////
template<typename T>struct less{
bool operator()(T a,T b){return a<b;}
};
struct greater {bool operator()(int a, int b){return a>b;}};
int main(){
int x[10] = {1,2,3,4,5,6,7,8,9,10};
less<int> cmp1;
greater cmp2;
sort(x,x+10,cmp1); //sort(int *, int *, less) 함수 생성
sort(x,x+10,cmp2); //sort(int *, int*, greater) 함수 생성
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//절대값 오름 차순시?
/////////////////////////////////////////////////////////////
template <typename T>struct absLess{
inline bool operator()(T a, T b){return abs(a) < abs(b);}
};
int main(){
int x[10] = {1,3,5,7,9,-2,4,6,8,10};
//절대값 오른차순으로 소트하고싶다.
absLess<int> cmp;
sort(x,x+10,cmp);
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]18. New 연산자 이야기 (0) | 2012.08.15 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]17. 변환 연산자와 변환 생성자. 그리고 활용. (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]15. STL find, strchr 구현하기 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]14-3.실제로 안드로이드 프레임웤에서 사용되는 스마트 포인터 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발강의]14-2 스마트포인터의 얕은복사 해결과 템플릿 (0) | 2012.08.14 |