[c++] STL 알고리즘은 .begin (), end () 대신 전체 컨테이너를 인수로 취합니까?


1 Answers

한 가지 이유 반복자 범위에 유연성 을 제공 할 수 있다는 것 입니다. 언젠가 모든 요소를 ​​반복 할 필요는 없습니다.

<iterator> it = myContainer.begin();
it++; // do something
it++; // do something
...
std::count_if(it, myContainer.end(), /* ... */ );

또한, 당신은 항상 당신을 위해 이것을 수행하는 래퍼를 가질 수 있습니다 :

template<typename T>
... count_if (T myContainer, ...)
{
  std::count_if(myContainer.begin(), myContainer.end(), /* ... */ );
}
Question

독립 실행 형 STL 알고리즘 (예 std::count_if )은 반복자 쌍을 사용합니다. 내가 사용하는 모든 경우에 (그리고 내가 온라인으로 본 모든 예에서!) 나는 타이핑을하고있다.

std::count_if(myContainer.begin(),myContainer.end(), /* ... */ );

스타일의 속기형 템플릿을 사용하는 이유가 있습니까?

std::count_if(myContainer, /* ... */ );

가 제공되지 않는다. 왜냐하면 전체 컨테이너에 대해 수행되는 운영이 아니라는 것을 감안할 때? 방금 간과 했나요? C ++ 11과 C ++ 03의 답변이 다른가요?




STL 알고리즘이 반복자를 사용하여 컨테이너와 연결 / 대화하기 때문입니다.



Related