據我所知,用於遍歷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