nakka soft world !
알고리즘의 정책 변경 본문
알고리즘의 정책 변경
1. 함수, 함수 객체, 람다 표현식
#include <iostream>
#include <vector>
#include <algorithm>
#include <funcntional> // STL의 함수 객체 사용
using namespace std;
bool compare( int a, int b) ( retrun a > b; }
int main()
{
vector<int> v = {1,2,3,4,5,6,7,8,9,10};
sort(v.begin(), v.end()); // 크기비교 <
for (auto n : v)
cout << n << endl;
sort(v.begin(), v.end(), compare); // 비교 함수 전달 - 함수는 일반 함수도 가능.
for (auto n : v)
cout << n << endl;
greater<int> g; // 크기비교 >
sort(v.begin(), v.end(), g); // 비교 함수 전달 - 함수는 일반 함수도 가능.
for (auto n : v)
cout << n << endl;
// ===== 여기 까지가 구버전 방식
// C++ 11에서의 방식. 람다 표현식. (Lambda expression)
sort(v.begin(), v.end(), [](int a, int b) { retrun a > b; } );
for (auto n : v)
cout << n << endl;
// 일반함수 - 인라인 치환안됨. 속도가 약간 느림.
// 함수 객체, 람다.- 인라인 치환됨. 속도가 빠름.
}
'프로그래밍언어 > C++' 카테고리의 다른 글
상속의 개념 (0) | 2017.03.25 |
---|---|
STL 설계 철학 (0) | 2017.03.19 |
STL 알고리즘 ( algorithm ) (0) | 2017.03.19 |
반복자 (STL iterator) (0) | 2017.03.19 |
컨테이너 (Container) (0) | 2017.03.19 |