据我所知,用于遍历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'这样的函数。我常用的有一个'for_all',用于执行你的函数,以及用于指针的范围和容器的'indirect_for_each'和'indirect_for_all'。 – 2011-04-11 03:54:45