내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고,
도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필
모든 프로그래머가 변수명 a 는 test 용도로만 쓴다고 알고 있다고 가정해보자. 그렇다면 모든 프로그래머는 a를 테스트 용도로만 사용함으로써 코드의 가독성이 올라 갈 것이다.
이처럼 많은 프로그래머들이 암묵적으로 몇가지 알고 있다고 믿는 상황이 있따.
operator == 두개의 값이 상등성으로 비교한다고 믿는다.
복사생성자는 모든 값을 동일하게 복사된다고 믿는다.
객체의 주소를 받아내면 포인터가 나온다고 믿는다.
그리고...
less<T>는 operator< 라고 믿는다.
... 그렇다 모든 프로그래머가 less<T> 는 operator< 의 동등성 비교라고 믿는것이다.
그러므로 꼴깝떨지 말고, less<T> 의 비교형식에 다른 기능을 넣으려 하지말고 operator< 의미만 부여해서 사용하라는 주제이다.(.. 앞의 꼴깝떨지 말고는 .. 내가 자주 듣는 말이다. ㅋㅋ)
만약 다른 기능을 넣고 싶은 함수 객체를 만들고자 한다면, .. 다른 함수 객체를 생성해서 쓰라는 것이다.
그렇다면 왜 하필 less<T>에 대해서 이렇게 말할까?
STL 의 컨테이너들은 기본 정렬구조가 less<T>를 가지고 있기 때문이다.!
관련링크
http://ilu8318.egloos.com/844489
http://lagoons.net/tt/609
http://www.sgi.com/tech/stl/less.html
모든 프로그래머가 변수명 a 는 test 용도로만 쓴다고 알고 있다고 가정해보자. 그렇다면 모든 프로그래머는 a를 테스트 용도로만 사용함으로써 코드의 가독성이 올라 갈 것이다.
이처럼 많은 프로그래머들이 암묵적으로 몇가지 알고 있다고 믿는 상황이 있따.
operator == 두개의 값이 상등성으로 비교한다고 믿는다.
복사생성자는 모든 값을 동일하게 복사된다고 믿는다.
객체의 주소를 받아내면 포인터가 나온다고 믿는다.
그리고...
less<T>는 operator< 라고 믿는다.
... 그렇다 모든 프로그래머가 less<T> 는 operator< 의 동등성 비교라고 믿는것이다.
그러므로 꼴깝떨지 말고, less<T> 의 비교형식에 다른 기능을 넣으려 하지말고 operator< 의미만 부여해서 사용하라는 주제이다.(.. 앞의 꼴깝떨지 말고는 .. 내가 자주 듣는 말이다. ㅋㅋ)
만약 다른 기능을 넣고 싶은 함수 객체를 만들고자 한다면, .. 다른 함수 객체를 생성해서 쓰라는 것이다.
그렇다면 왜 하필 less<T>에 대해서 이렇게 말할까?
STL 의 컨테이너들은 기본 정렬구조가 less<T>를 가지고 있기 때문이다.!
관련링크
http://ilu8318.egloos.com/844489
http://lagoons.net/tt/609
http://www.sgi.com/tech/stl/less.html
'책 정리 > Effective STL' 카테고리의 다른 글
항목 47 : 쓰기 전용(write-only) 코드는 만들지 말자. (0) | 2008.09.07 |
---|---|
항목 46 : 알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다. (0) | 2008.09.07 |
항목 45 : count, find, binary_search, lower_bound, upper_bound, 그리고 equal_range 를 제대로 파악해 두자. (0) | 2008.09.07 |
항목 44 : 같은 이름을 가진 것이 있다면 일반 알고리즘 함수보다 멤버 함수가 더 낫다. (0) | 2008.09.07 |
항목 43 : 어설프게 손으로 작성한 루프보다는 알고리즘이 더 낫다. (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 |
항목 38 : 함수자 클래스는 값으로 전달되도록(pass-by-value) 설계하자. (0) | 2008.09.05 |
항목 37 : 범위 내의 데이터 값을 요약하거나 더하는 데에는 accumilate나 for_each를 사용하자 (1) | 2008.09.05 |
최근댓글