티스토리 뷰
vector의 iterator를 사용 중
for(std::vector<CMyData*>::iterator it = vecData.begin() ; it != vecData.end(); it++)
(*it)->GetName();
이런게 있었다.
아무 생각 없이 쓰고보니.. it는 우선은.. 내가 선언한 std::vector<T*>::iterator 클래스의 인스턴스인데..
여기에 왜 역참조인 *가 붙었지?
<이 안에 든거> == *it인데..
아하 그럼 it는 <이 안에 든거>의 포인터겠구나~ 하고 생각했지만.. 포인터가 아니였다..(kering 왈)
마치 포인터 처럼 오버로딩 돼 있었다.
우선 *가 오버로딩 돼있다.
const_reference operator*() const
그외에 _Vb_const_iterator<_MycontTy>& operator++() 등등
vector 헤더에 있는 이것 저것 다 살펴보면 마치 포인터 처럼 보이도록 다 오버로딩이 돼있다.
즉 이터레이터는 마치 포인터인듯 사용하지만 이것은 포인터가 아니다.
참고로 vector의 iterator는 랜덤 액세스가 가능해서 + 나 - 등에도 다 오버로딩이 돼있지만, list의 경우는 아니랜다. (역시나 kering님 왈)
역시 C++의 세계는 심오해..
'JHB > 잡다한 이야기' 카테고리의 다른 글
유니코드와 멀티바이트, UTF-8 이런 놈들은 무엇인가? (3) | 2011.05.12 |
---|---|
[잡설] final과 const와 포인터와 클래스대한 고찰 (1) | 2011.03.22 |
[잡설] 같은 기능을 갖는 인스턴스를 여러개 생성하지 말자 (0) | 2011.03.15 |
[잡설] 특정 컨트롤이나 변수에 의존적으로 값이 바뀌는 변수에 대하여. setter의 사용. (0) | 2011.02.15 |
[C++] 파라미터 없는 void는 웬만하면 지양하자 (0) | 2011.02.15 |
사랑에 관한 시 (0) | 2010.06.06 |
[세미나] 터치 스크린의 캘리브레이션 원리와 방식 (0) | 2010.04.13 |
단기 목표 - 그래픽 처리 구현 (0) | 2008.10.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Cloud
- android
- database
- jni
- driver
- java
- it
- Python
- winapi
- C
- C++
- 안드로이드
- source
- Visual C++
- MFC
- 프로그래밍
- gcc
- Troubleshooting
- AWS
- jni강좌
- db
- kering
- API
- Quiz
- linux
- 드라이버
- 리눅스
- NDK
- algorithm
- 음악
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함