nakka soft world !

알고리즘의 정책 변경 본문

프로그래밍언어/C++

알고리즘의 정책 변경

nakka 2017. 3. 19. 22:50
728x90

알고리즘의 정책 변경


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;


// 일반함수 - 인라인 치환안됨. 속도가 약간 느림.

// 함수 객체, 람다.- 인라인 치환됨. 속도가 빠름.

}

728x90

'프로그래밍언어 > 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
Comments