iterator(2)
-
[effective STL] 항목 27 : const_iterator -> iterator는 distance와 advance를 사용하자.
핵심(우리가 해서는 안 될 짓)const_iterator와 iterator는 서로 다른 클래스이다.string과 complex의 관게보다도 멀다고 한다.한 마디로 캐스팅이 안 된다. 전혀 엉뚱한 클래스를 캐스팅하려 하지 말자. 해결(const_it -> it)과정1. 컨테이너의 첫 요소를 가리키는 iterator를 생성한다.2. const_iterator가 가리키는 곳 까지 iterator가 뛰면 끝! so simple!3. 거리 계산엔 distance와 점프엔 advance가 사용된다. 그럼 이렇게 하면 되는가?1advance(i, distance(it, constIt));cs안 된다고 하신다. distance의 선언문을 보자12template typename ierator_traits::differe..
2016.02.15 -
[effective STL] 항목 26 : 여러 iterator 중 쓸만한 것은 결국 iterator
총 4개의 iterator를 제공한다.iterator, const_iterator, reverse_iterator, const_reverse_iterator 일종의 T*, const T*, 그리고 head 부터인지 tail 부터인지 차이다. iterator의 변환 관계는 다음과 같다. iterator가 좋은 이유- 어떤 형태의 insert나 erase 멤버 함수는 무조건 iterator만을 넘겨야 한다.- const_iterator를 iterator로 암묵적 변환할 방법이 없다. 방법이 있지만 성능과 안정성이 보장되지 않는다.- reverse_iterator를 iterator로 변환할 수 있지만 변환 후 약간의 조정이 필요하다. const_iterator와 iterator를 동시에 사용할 시 팁Tip 1..
2016.02.10