항목 21과 같은 맹락으로 이어진다. 이것 또한 연관 컨테이너(Associative Containers)의 연관을 무너뜨리게 한다. map 과 multimap 도 키를 바꿀수는 있을 꺼 같지만, 여기선 const 이기 때문에 변경을 못하도록 되어 있다.(캐스팅 하면 가능하지만...) 그래서 이 두개의 컨테이너는 삭제 후 삽입 방법으로 변경해야 한다. 하지만 set 이나 multiset 은 값 자체가 키(Key)이기 때문에, 바꾸는 일은 피해야 한다는 것이다. 이것도 키를 바꾸기 위해선 "삭제 후 삽입"을 해야만 한다. 곰곰히 생각하면 난 바꾸지 않을테니까, const 로 Key를 설정할꺼야. 라고 해서 std::set 하게 해도 크게 두가지 이유 때문에 무의미하게 된다. 첫째, 사용자 정의 객체를 담을 ..
associative 검색 결과
해당 글 2건
항목 22 : set과 multiset에 저장된 데이터 요소에 대해 키(key)를 바꾸는 일은 피하자.
책 정리/Effective STL
2008. 7. 19. 17:57
항목 9 : 데이터를 삭제할 때에도 조심스럽게 선택할 것이 많다.
"항목 2를 보면 독립적인 코드는 환상일 뿐이다" 라고 말하고 있듯이, 컨테이너 마다 원소 삭제 방법이 다르다. Sequence Containers 와 Associative Containers 의 차이점이 있으니, Effective 하게 사용 하라는 이야기이다. 정리하자면 총 3가지의 지우는 방법이 있다. 첫째, Container 속의 특정값을 가진 원소를 지우고자 할 때 Sequence Containers 의 경우, erase-remove 합성문이 제일 효율적 이다. // 코드 1-1 #include #include #include int main(void) { typedef std::vector ccc; ccc vecHaha; vecHaha.push_back(1963); vecHaha.push_bac..
책 정리/Effective STL
2008. 7. 13. 16:48
최근댓글