STL 컬렉션을 반복하는 관용구는 다음과 같습니다.왜 항상 std :: for_each에서 반복자를 지정해야합니까?
int a[] = { 1,2,3 };
std::vector<int> v(a, a+3);
std::for_each(a.begin(), a.end(), some_function);
첫 번째이자 마지막 반복자를 지정하면 컬렉션의 특정 범위에서만 작업하려는 경우 유용합니다. 좀 더 창조적 인 일을해라.하지만 대부분의 경우, 나는 우리가 실제로 전체 컬렉션 작업을 원한다고 생각한다. 그래서 사람들이 왜 그런 상황에서 반복자를 지정해야하는지 궁금해합니다. (항상 같기 때문에) 다음 라인을 따라 편의 함수를 사용하지 마십시오 :
namespace easy
{
template <class T, class F>
F for_each(T& collection, F function)
{
std::for_each(collection.begin(), collection.end(), function);
return function;
}
}
(물론, 이 은 일을하는 관용적 인 방법 인 일 가능성이 있으며, 나는 결코 눈치 채지 못했습니다! 저는 C++에 익숙하지 않습니다.)
대부분의 STL 과중 프로젝트에는 'for_each'와 같은 기능을 가진 "알고리즘 헬퍼"헤더가 있다는 것을 짐작할 수 있습니다. 필자가 일반적으로 사용하는 함수는 포인터의 범위와 컨테이너에 사용되는'indirect_for_each' 및'indirect_for_all'과 함께 함수가 수행하는'for_all'을 가지고 있습니다. –