일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- reference
- effective stl
- 예외
- c++
- 영화
- implicit conversion
- exception
- Effective c++
- Smart Pointer
- more effective c++
- virtual function
- 티스토리챌린지
- iterator
- universal reference
- 상속
- 반복자
- 오블완
- 게임
- UE4
- 스마트 포인터
- std::async
- lua
- 언리얼
- 보편 참조
- 영화 리뷰
- operator new
- effective modern c++
- resource management class
- 참조자
- 암시적 변환
- Today
- Total
목록iterator (4)
스토리텔링 개발자
항목 13. iterator보다 const_iterator를 선호하라 const_iteratorconst_iterator는 수정하면 안되는 값들을 가리킨다.가능한 한 const를 사용하라는 표준 관례는 반복자에도 적용된다.허나 C++98에서는 이게 쉽지 않았다.(EC++ 항목 26 참조)std::vector values;...std::vector::iterator it = std::find(values.begin(), values.end(), 1983);values.insert(it, 1998);위 코드에서의 반복자는 전혀 수정되지 않으므로 const_iterator면 좋겠다.하지만 C++98에서는 간단하지 않다.typedef std::vector IterT;typedef std::vector::co..

항목 28. reverse_iterator에 대응되는 베이스 반복자(base iterator)를 사용하는 방법을 정확하게 이해하자 대응되는 반복자 사용 예vector v;v.reserve(5);for(int i = 1 ; i ::reverse_iterator ri = find(v.rbegin(), v.rend(), 3); // ri는 3을 가리킨다.vector::iterator i(ri.base()); // i를 ri와 같은 곳을 가리키게 한다.이 코드 처리 후의 상황은 아래와 같다.왜 그럴까?reverse_iterator로는 삽입이나 삭제를 할 수 없다.(항목 26 참조)만약 ri로 99를 삽입하여 아래처럼 만들고 싶다고 하면..reverse_iterator를 삽입 함수에 사용할 수 없으므로 ri ..

항목 27. const_iterator를 iterator로 바꾸는 데에는 distance와 advance를 사용하자 const_iterator를 iterator로 캐스팅?const_iterator는 암묵적 변환이 일어나지 않으므로 직접 바꿔주어야 한다.그렇다면 캐스팅(casting)을 쓰면 될까?using IntDeque = deque;using Iter = IntDeque::iterator;using ConstIter = IntDeque::const_iterator;IntDeque d;ConstIter ci;...Iter i(ci); // 에러 발생. 암묵적 변환은 불가능하다.Iter i2(const_cast(ci); // 여전히 에러. 캐스팅이 불가능하다.const_iterator와 iterato..

항목 26. const_iterator나 reverse_iterator, const_reverse_iterator도 좋지만 역시 쓸만한 것은 iterator이다 iterator들의 관계vector에서 제공되는 함수들을 우선 보도록 하자.iterator insert(iterator position, const T& x);iterator erase(iterator position);iterator erase(iterator rangeBegin, iterator rangeEnd);모두 iterator를 매개변수로 받아들인다.이제, 네 가지 반복자 사이의 상호 변환 관계를 그림으로 보도록 하자.const_iterator가 iterator로, const_reverse_iterator가 reverse_itera..