21.03.24 01:32 작성
·
318
1
typedef를 사용해서 Iterator<T> iterator를 선언하는 부분에서 제대로 이해하기 어려운것 같아서 질문남깁니다.
typedef를 선언했을때,
main함수의 for문안에서 Vector<int>::iterator 했을때 자동적으로 iterator<T> 타입을 이용한다는 부분이 와닿지 않습니다. 좀더 구체적인 설명 조금 부탁드려도 될까요?
왜 저것을 사용했을때 Vector<int>::iterator 가 문법적으로 문제가 없는지 잘 모르겠습니다.
클래스명::을 사용하는 문법은 어떤 상황에서 사용하는건가요?
std:: 라는것처럼 네임스페이스 부분으로 이해한 경우는 있는데, 클래스명으로 ::으로 했을때는 어떤 경우에서 사용하는지 헷갈리는것 같습니다.
추가 보충설명 해주시면 정말 감사하겠습니다.
답변 4
3
2021. 03. 24. 03:16
:: 은 그냥 [~~에 있는 정도]로 해석하시면 됩니다.
vector<int>::iterator는 vector<int> 클래스에 있는 iterator 타입을 사용하겠다,
라는 의미인데 이전에 우리가 typedef Iterator<T> iterator;
를 통해 앞으로 Iterator<T>를 iterator라는 이름으로 부르기로 했습니다.
따라서 마법처럼 Iterator<T> 타입이 되는거죠!
심지어 vector<int>로 정하는 순간
T는 int로 고정되니 Iterator<int>가 될겁니다.
1
1
0
루카스님께서 말씀하신
":: 은 그냥 [~~에 있는 정도]로 해석하시면 됩니다"
라는 내용은!
간단하게 생각하면 이전에 클래스 내부에 함수를 선언하고 클래스 외부에 함수를 정의할때를 생각하시면 됩니다.
(Player 클래스 내부)
void function(const int num);
(클래스 외부)
void Player::function (const int num)
{
...
}
"Player 클래스 안에 function이 있다" 라고 해석한 것 처럼
저희가 Vector 클래스에 iterator을 만들었으니
"Vector클래스 안에 iterator이 있다" 라고 해석 하면 되는거죠!