2014-04-08 1 views
0

화살표를 사용하여 요소에 액세스하는 방법도 그것은 포인터로 선언되지 않은 생각 두 번째 줄에서 다음 줄을C++ 프로그래밍, 반복자는 포인터가 심지어 포인터

std::map<char,int> mymap; 
std::map<char,int>::iterator it; /* not std::map<char,int>::iterator *it; */ 

을 고려 선언되지 않은 것입니다 당신은 당신의 클래스 -> 연산자를 오버로드 여기 일이 정확히 무엇을 할 수

std::cout << it->first << " => " << it->second << '\n'; 
+0

같은 방법입니다. – chris

+0

iterator는 포인터가 아니더라도 *** 포인터처럼 작동하도록되어 있습니다. –

답변

4

노호처럼 - (>) 연산자를 사용합니다.

또 다른 예 : 연산자 오버로딩 : 당신은`표준 : cout`와 <<``사용할 수 있습니다

class Hello 
{ 
public: 
    void Show() 
    { 
     printf("Hello, world!"); 
    } 
}; 

class MyClass 
{ 
private: 
    Hello hello; 

public: 

    Hello * operator ->() 
    { 
     return &hello; 
    } 
}; 


int main(int argc, char * argv[]) 
{ 
    MyClass m; 

    m->Show(); 
} 
+0

도트 (.) 연산자를 사용하면 std :: cout << it.first << " => "<< it.second << '\ n'; – Dinesh

+0

@Dinesh를 사용하면 어떨까요? – Spook

+0

@Dinesh As 이터레이터는 포인터처럼 작동해야하는데, 물론 역 참조 연산자도 정의되어 있으므로'(* it) .first'를 할 수 있습니다. 그러나 이터레이터 자체는 기본적으로 "블랙 박스"이며 구현 방법은 다음과 같습니다. 지정되지 않은 인터페이스 (과부하 연산자가 지원해야하는 등)와 동작 (증분 할 때 일어나는 것과 같은 동작) –