[완료] iterator와 pointer

clauxewitz의 이미지

Accelerated C++로 공부하고 있는 초짜입니다.
Chapter 10의 연습문제 2번을 풀고 있는데요.
container안의 값들을 정렬시켜 중간값을 구하는 median 함수를
vector와 array 둘 모두에 적용시킬 수 있게끔 하기 위해
template으로 구현하려고 합니다.

template<class T> T median(T*, T*);
 
vector<int> int_vec;
int int_array[];
 
size_t size = sizeof(int_array) / sizeof(*int_array);
 
cout << median(int_vec.begin(), int_vec.end()) << endl  // ERROR
     << median(int_array, int_array + size) << endl;

median 함수에 pointer 인자를 전달하는 방식을 쓰려는데
array로는 잘 되고 vector에서 컴파일 에러가 나더군요.
begin()과 end()는 모두 iterator를 리턴하고
STL에서 iterator도 pointer로 구현되었다고 들은 바가 있어서
저렇게 해도 되지 않을까 싶었는데 안되네요.

코드에 문제가 있는건지,
아니면 Dev-C++(g++)에서 컴파일해서 그런건지 잘 모르겠어서 질문드립니다.

klara의 이미지

반복자와 포인터는 다릅니다. 반복자를 포인터처럼 쓸수 있도록 *연산자및 ->연산자가 오버로딩 되어있을 뿐입니다.

clauxewitz의 이미지

연산자만 오버로딩되어있을 뿐인 건가 보군요. 역시 저에겐 공부가 필요하겠네요~ 감사합니다^^