STL算法在目标函数中使用迭代器

时间:2014-02-26 19:29:52

标签: c++ templates stl

我想使用一个需要参数为迭代器的函数,可以将它应用于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
   // .....
});

1 个答案:

答案 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)