일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 상속
- 함수 객체
- 언리얼
- 다형성
- effective stl
- implicit conversion
- reference
- 스마트 포인터
- 영화
- exception
- Effective c++
- resource management class
- 반복자
- 참조자
- 암시적 변환
- lua
- 루아
- virtual function
- Smart Pointer
- 영화 리뷰
- 게임
- 메타테이블
- UE4
- 티스토리챌린지
- 오블완
- operator new
- more effective c++
- 비교 함수 객체
- c++
- 예외
- Today
- Total
목록함수 객체 (3)
스토리텔링 개발자
항목 46. 알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다 추상화(abstraction)와 성능추상화가 높을수록 코드의 효율은 낮아진다.그런데 함수 객체가 함수보다 빠르다니? double의 벡터를 내림차순으로 정렬하기vector v;...// 방법 1sort(v.begin(), v.end(), greater()); // 함수 객체 greater를 사용했다.// 방법 2inline bool doubleGreater(double d1, double d2){ return d1 > d2;}sort(v.begin(), v.end(), doubleGreater); // 함수를 사용했다.방법 1이 거의 확실히 더 빠르다.이유는 인라인화(inlining)이다. 인라인화(inlining)인라인으..
항목 40. 함수 객체 클래스는 어댑터 적용이 가능하게(adaptable) 만들자 C++11 이후로는 더 이상 맞지 않는 이야기이므로 참고할 것.ptr_fun와 adaptable아래는 잘 동작하는 코드이다.list widgetPtrs;bool isInteresting(const Widget* pw);list::iterator i = find_if(widgetPtrs.begin(), widgetPtrs.end(), isInteresting);if(i != widgetPtrs.end()){ ... // interesting한 widget에 대한 첫째 포인터 처리}그렇다면 int..
항목 38. 함수 객체 클래스는 값으로 전달되도록(pass-by-value) 설계하자 매개변수로서의 함수와 함수 객체함수는 포인터 형태로 매개변수로 넘겨진다.void qsort(void* base, size_t nmemb, size_t size, int (*cmpfcn)(const void*, const void*));// cmpfcn을 자세히 살펴보면 값으로 전달되고 있음을 알 수 있다.// 즉, 함수 포인터는 값으로 전달된다.STL 함수 객체는 이 함수 포인터를 본떴으므로, 동일하게 값으로 전달된다.templateFunction for_each(InputIterator first, InputIterator last, Function f);// Function은 값 전달 / 값 반환이 이루어짐을 알..