내가 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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기