항목 19부터는 STL 연관 컨테이너(Associative Containers)에 대한 이야기이다.

어떻게 이해하는게 좋을까 고민하다가 한가지 묘안이 떠올랐다. 예로써 감을 잡는 방법을 쓴다.

연관컨테이너에서의
1. 상등(equality)은 "값이 같은가?" 이고, 동등(equivalence)는 "위치가 같은가?" 로 풀이가 된다.
2. 상등은(equality) operator== 으로 판별하고 동등(equivalence)은 operator< 으로 판별한다. >
3. 말로 하자면, 상등한 값이냐?, 동등한 위치냐?
4. 상등(equality)은 "같다, 틀리다" 로 표현되고, 동등(equivalence)은 "크냐? 작냐?" 로 표현된다.


이 정도로 이야기를 하면 어느정도 이해가 될 것이다. 이게 왜 중요하냐면, 연관컨테이너에 값을 넣을 때는 동등(equivalence) 관계로 넣고,  찾을때는 상등(equality) 관계로 찾기 때문이다.


만약 값을 넣을 때 동등(equivalence) 관계로 값을 넣기 때문에,
기존 컨테이너 값들 중 새로 넣는 값이 크거나 작거나 하지 않는다면 들어가지 못한다.
예를 들자면 컨테이너에 1,4,5,6 이 있고, 3을 넣게 되면, 1보다 크고 4보다 작기 때문에, 값이 들어간다.
하지만 4를 넣게 되면, 1보다 작지만 4보다 작은게 아니기 때문에, 값은 들어가지 못한다.

만약 값을 찾을 때 상등(equality) 관계로 찾기 때문에
기존 컨테이너 값들 같은게 없다면, 찾아내지 못한다.
예를 들자면, 컨테이너에 1,4,5,6 이 있고, 3을 찾게 되면, 못찾게 된다.
하지만 컨테이너에 4를 찾게 된다면, 4와 같은게 있기 때문에 찾을수 있게 된다.


코드를 통해 이 말을 보다 자세하게 표현하자면



왜 이렇게 구분을 지어 놨을 까?
.. 정렬을 하기 위해선 반드시 큰지 작은지를 판별할게 있어야 되고, 찾기 위해선 특정 값만을 찾아야 하기에 같은지 판별해야 하기 때문이다.


관련링크
http://jeddli.tistory.com/관련링크
http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/STL_Association
http://blog.empas.com/electr/tb/18722425
http://blog.empas.com/electr/18722439
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기