항목 13에서 보여주었던 String 클래스에는 큰 문제(..)는 없으나, 문자열 특성상 복사만 하고 삭제 되는 경우가 있기 때문에, 불필요한 복사가 이루어 진다고 볼 수 있다.
여기서 생각해 볼 만한 사항은, 어떻게 하면, 문자열의 내부가 변경 되어 질 경우에만, 실제 복사가 이루어 지게 하고, 아닐 경우에는 문자열만 공유 되게 할 수 있는가? 이다.
다음 코드를 보자!
자. 어떻게 하면 위의 "생각해 볼 만한 사항"을 만족하게 StringBuf 와 String 을 구현 할 수 있을까?
해설
이번 최적화 복사 알고리즘은,
- 내부값이 변경 되는가?
- 변경 된다면 깊은 복사
- 변경 되지 않는다면 참조 복사
총평
음~
'책 정리 > More Exceptional C++' 카테고리의 다른 글
항목 3 : 판단자(predicate) Part 2 : 상태와 판단자 ( 난이도 : 7 ) (0) | 2008.12.20 |
---|---|
항목 2 : 판단자(predicate) Part 1 : remove()가 삭제 하는 것은? (난이도 : 4 ) (0) | 2008.12.19 |
항목 1 : 스트림 전환(Switching Streams) ( 난이도 : 2 ) (0) | 2008.12.19 |
항목 16 : 최적화 미루기 Part 4 : 멀티쓰레드 환경 (0) | 2008.12.18 |
항목 15 : 최적화 미루기 Part 3 : 반복자와 참조 ( 난이도 : 6 ) (0) | 2008.12.18 |
항목 13 : 최적화 미루기(lazy optiomization) Part 1 : 그저 평범한 String (난이도 : 2 ) (0) | 2008.12.18 |
항목 12 : inline ( 난이도 : 4 ) (0) | 2008.12.17 |
항목 28 : 다형성 제어하기 ( 난이도 : 3 ) (0) | 2008.12.16 |
항목 27 : (비)순수 가상 함수 ( 난이도 : 7 ) (0) | 2008.12.16 |
항목 26 : 다중 상속과 샴 쌍둥이 문제 ( 난이도 : 4 ) (0) | 2008.12.16 |
최근댓글