如何编写迭代任何提供迭代器

时间:2017-08-25 11:37:03

标签: c++11

在Python中,很容易迭代任何提供迭代器的东西:

def iterate(iterable):
    for i in iterable:
        do_something(i)

是否可以在C ++中编写类似的功能?

其他答案提示如下:

template<class iterator_type>
void iterate(iterator_type it, iterator_type end)
{
    while (it != end) {
        do_something(*(it++));
    }
}

但有没有一种方法可以直接用迭代器取一些东西并且自己开始和结束迭代器?

毕竟,问题简化为:是否有一种标准化的方法可以从任何提供迭代器的对象中获取迭代器?(与Python中的iter(...)类似。)

1 个答案:

答案 0 :(得分:4)

您可以使用range for迭代具有迭代器的集合。

  

是否有一种标准化的方法可以从任何提供迭代器的对象中获取迭代器?

是的,它的std::begin(...)std::end(...)功能。