Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[3102] v.erase( --ri.base() ); 가 틀린 이유는?
유지상 [applectron] 1051 읽음    2003-11-19 23:57
Effective STL에서 wrong code 의 예로 나온 것입니다.

//Remove the last occurence of 3
vector<int> v; 
blobloblo;
vector<int>::reverse_iterator ri = find( v.rbegin(), v.rend(), 3);
v.erase( --ri.base() );
여기서 마지막 줄을
v.erase( (++ri).base() );
이걸로 바꿔쓰는게 좋다고 그러거든요.
그 이유가 vector class의 iterator가 대부분의 플렛폼에서 built-in pointer로 구현되기 때문에,
ri.base()는 pointer를 리턴하게 된다고 그래서 그 경우 위의 코드가 컴파일이 안된다고 해요.
그런데, ri.base()가 pointer를 리턴하는 거랑 --ri.base()가 컴파일 안되는 거랑 아무 상관이 없을 것 같거든요.
ri.base()가 pointer이면 포인터에 --연산자 하는 것은 아무 문제가 없는 것이라고 생각하는데, 맞나요?

+ -

관련 글 리스트
3102 v.erase( --ri.base() ); 가 틀린 이유는? 유지상 1051 2003/11/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.