각 variable i는 컨테이너 안의 요소를 훑기 위한 목적에서 선언되는데, 그 선언 방식이나 유형에 차이가 있어서 그 차이점이 뭔지 알고 싶습니다.
늘 답변을 달아주시는 분들께 고마운 마음을 전합니다.
1번) string::size_type i
2번)
template <typename ForwardIterator>
ForwardIterator maximum_iterator(ForwardIterator first, ForwardIterator last)
{
ForwardIterator i = first;
}
3번)
template <typename Sequence, typename UnaryFunction>
Sequence mapf(Sequence c, UnaryFunction f)
{
typename Sequence::iterator i;
}
4번)
for(vector<int::size_type i = 0; i < v.size(); i++)
{
....
}
1번의 경우 string을 for-loop로 훑기 위해 size_type 앞에 string::을 붙였다는건 이해가 되고.
2번의 경우 iterator니까, i의 유형이 iterator 인 것도 이해가 됩니다.
그런데 3번의 경우, 똑같이 컨테이너를 훑을 iterator를 선언했는데 왜 앞에 2번과는 달리 "typename Sequence::"가 붙어야 하는지 이해가 어렵습니다.
그리고 4번의 경우, vector라는 컨테이너를 훑기 위함인데 왜 iterator가 아니라 일반 변수를 선언했는지 궁금합니다. vector에 iterator를쓰는건 별로 안좋은가요?
|