STL 람다표현식 익명 함수 람다 표현식 바깥 범위에 있는 변수룰 캡쳐하고 접근할 수 있다는것이 일반 함수와 다르다. STL 알고리즘 자주 사용 람다 표현식 시작은 [] 로 표시 매개변수 지정 : 1 2 3 auto cube = [](double val) { return val * val * val; }; cs 본문은 {} 사이에 쓰고, 일반 함수와 같다. 반환 타입을 지정하지 않으면 반환 값의 타입이 된다. 후행반환타입 형식을 사용해서 반환 타입 지정 1 2 3 [](double val)->double { return val * val * val; }; cs 람다표현식은 익명 객체지만 변수에 람다 표현식 주소를 저장할 수 있다. (매개변수 지정 코드에서 cube 에 람다표현식 주소를 저장) cube는 ..
클래스 템플릿 (함수템플릿 참고 : http://petra.tistory.com/1224) 클래스를 만들어 내는 틀 (메태코드) 로 함수 템플릿과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include "stdafx.h" #include using namespace std; class Array { int* buf, size, capacity; public: explicit Array(int cap = 100) : buf(0), size(0), capacity(cap) { buf = new int[capacity]; } ~Array() { delete[] buf; } void Add(int data) { buf[size++]..
함수 객체 (Function Object) 함수 객체는 함수처럼 동작하는 객체 함수처럼 동적하려면 객체가 ()연산자를 정의해야 하며, ()연산자 오버로딩한 객체 함수자(Functor, Function operator)라 불리기도 한다. 장점> 다른 멤버 변수와 멤버 함수를 가질 수 있다. 일반 함수에서 하지 못하는 지원을 받을 수 있다. 함수 객체의 서명이 같아도 객체 타입이 다르면 서로 다른 타입으로 인식 (오버라이딩) 일반 함수보다 속도 빠르다. 함수 주소를 전달하여 콜백(서버에서 클라이언트 함수호출)하는 경우 이 함수 포인터는 인라인될 수 없지만(함수 포인터는 함수가 있어야 하므로 인라인 함수의 복사본 함수를 만들어 낸다) 함수 객체는 인라인될 수 있다. 컴파일러가 쉡게 최적화할 수 있다. 아래 코..