내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고,
도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필
실제로 내가 사용해본 바로, 함수 객체는 정말 STL 의 감초같은 녀석이였다. 이 녀석을 만드는 방법과 어떻게 효율적으로 사용하는지 42항목까지 설명해 준다.
이번 항목에서는 함수 객체 설계시 값에 의한 전달을 고려해야 설계하라는 것이다.
왜냐하면
1. 지금까지 사용했던 알고리즘 중 함수객체를 사용하는 것들은 전부 함수객체를 값에 의한 전달로 사용했고
2. 함수 객체는 함수 포인터 본 뜬 것
을 들 수 있다.
그렇다면 값에 의한 전달을 어떻게 하면, Effective 하게 만들수 있까?
기본 모토는 1. 함수 객체의 크기를 작게 만들것, 2. 다형성을 없앨 것
1. 불필요한 변수를 만들지 않으면 될 것이고
2. operator() 를 virtaul 로 만들지 않으면 될것이다.
하지만 어디 인생사 이렇게 효율적인가...? 오히려 복잡한게 더 효율적일 수도 있다. 그렇기 때문에, 되도록 크기를 작게하고 경우에 맞게 다형성을 사용할지 말지 결정 하면 된다.
관련링크
http://ilu8318.egloos.com/839134
http://oldpie.yoonkn.com/cgi-bin/moin.cgi/EffectiveStl
http://yesarang.tistory.com/57 <-- 김윤수님의 함수객체에 대한 설명
http://ikpil.com/268
http://ikpil.tistory.com/537
http://www.nortul.com/linux/STL/fun_0476.htm
실제로 내가 사용해본 바로, 함수 객체는 정말 STL 의 감초같은 녀석이였다. 이 녀석을 만드는 방법과 어떻게 효율적으로 사용하는지 42항목까지 설명해 준다.
이번 항목에서는 함수 객체 설계시 값에 의한 전달을 고려해야 설계하라는 것이다.
왜냐하면
1. 지금까지 사용했던 알고리즘 중 함수객체를 사용하는 것들은 전부 함수객체를 값에 의한 전달로 사용했고
2. 함수 객체는 함수 포인터 본 뜬 것
을 들 수 있다.
그렇다면 값에 의한 전달을 어떻게 하면, Effective 하게 만들수 있까?
기본 모토는 1. 함수 객체의 크기를 작게 만들것, 2. 다형성을 없앨 것
1. 불필요한 변수를 만들지 않으면 될 것이고
2. operator() 를 virtaul 로 만들지 않으면 될것이다.
하지만 어디 인생사 이렇게 효율적인가...? 오히려 복잡한게 더 효율적일 수도 있다. 그렇기 때문에, 되도록 크기를 작게하고 경우에 맞게 다형성을 사용할지 말지 결정 하면 된다.
관련링크
http://ilu8318.egloos.com/839134
http://oldpie.yoonkn.com/cgi-bin/moin.cgi/EffectiveStl
http://yesarang.tistory.com/57 <-- 김윤수님의 함수객체에 대한 설명
http://ikpil.com/268
http://ikpil.tistory.com/537
http://www.nortul.com/linux/STL/fun_0476.htm
'책 정리 > Effective STL' 카테고리의 다른 글
항목 43 : 어설프게 손으로 작성한 루프보다는 알고리즘이 더 낫다. (0) | 2008.09.07 |
---|---|
항목 42 : less<T>는 operator<의 의미임을 꼭 알아두자. (0) | 2008.09.07 |
항목 41 : ptr_fun, mem_fun, mem_fun_ref의 존재에는 분명한 이유가 있다. (0) | 2008.09.07 |
항목 40 : 함수자 클래스는 어댑터 적용이 가능하게(adaptable) 만들자. (0) | 2008.09.05 |
항목 39 : 술어 구문은 순수 함수로 만들자. (0) | 2008.09.05 |
항목 37 : 범위 내의 데이터 값을 요약하거나 더하는 데에는 accumilate나 for_each를 사용하자 (1) | 2008.09.05 |
항목 36 : copy_if를 적절히 구현해 사용하자 (0) | 2008.09.03 |
항목 35 : 대소문자를 구분하지 않는 문자열 비교는 mismatch 아니면 lexicographical_compare를 써서 간단히 구현할 수 있다. (0) | 2008.09.03 |
항목 34 : 정렬된 범위에 대해 동작하는 알고리즘이 어떤 것들인지 파악해 두자 (0) | 2008.09.03 |
항목 33 : remove와 비슷한 알고리즘을 포인터의 컨테이너에 적용할 때에는 각별히 조심하자. (0) | 2008.09.02 |
최근댓글