我想使用一个需要参数为迭代器的函数,可以将它应用于std :: for_each等STL算法吗?
std::vector<int> v({0,1,2,3,4});
std::for_each(v.begin(), v.end(), [](std::vector<int>::iterator it)
{
// Do something that require using the iterator
// .....
});
答案 0 :(得分:1)
您可以轻松地创建自己的“实现”,将迭代器传递给函数。
namespace custom {
template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function fn)
{
while (first!=last) {
fn (first);
++first;
}
return fn;
}
}
std::vector<int> v({0,1,2,3,4});
custom::for_each(v.begin(), v.end(),
[](std::vector<int>::iterator it)
{
std::cout << *it << std::endl;
});
我没有看到这个优点在一个简单的循环中:
for (auto it = v.begin(); it != v.end(); ++it)