왜 중복 자료형 삭제가 필요한 걸까?
 이것도 3.9, 3.8, 3.7과 마찬가지로 기존의 자료형에서 약간의 변형만 주어 새로운 자료형을 손쉽게 만들기 위함에 있다.

어떻게 하면 typelist의 중복 자료형을 삭제 할 수 있을까?
우선 생각해 볼 것이 있다.
1. 중복된 자료형인지 어떻게 판별 할 수 있을까?
typelist에서 첫번째 타입은 온전히 확인 가능하다. 그러므로 이 첫번째 타입 즉, Head 타입이 Tail타입에 있는지 체크하면 될 것이다.

2. 중복되었다면 어떻게 지울 수 있을까?
3.9에서 특정 타입을 지우는 방법을 배웠다. Tail 에서 Head를 지우고 이 결과 타입을 다시 중복제거 알고리즘을 돌리면 될 것이다.

3. 중복되지 않았을 경우에는 어떻게 처리 할 수 있을까?
Erase함수를 통해서 중복되지 않았을 경우 아무것도 하지 않으므로, 이 부분은 신경쓸 필요가 없다. 예외적으로 중복제거 흐름이 typelist의 끝 타입인 NullType까지 왔다면 NullType을 리턴해 주면서 흐름을 멈추게 하면 된다.

중복제거 알고리즘의 시나리오를 완성했으니 코드로 옮겨 보자.

처음에 나는 EraseAll 을 사용해서 구현했었다. 책과 비교해 보니, 책 코드와 내 코드가 좀 다르더라, 혹시 Erase가 되지 않을까 란 생각에 해보니까 Erase로도 잘 된다.

책과 크게 다르지 않으니, 책의 소스와 내 소스를 보면 좋을것 같다.(만들고 나니 저자는 어떻게 저런 생각을 했지? 라는 생각이 든다.)

<textarea class="brush:cpp">
</textarea>

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기