在for_each中结束

时间:2011-08-16 22:18:59

标签: visual-studio visual-studio-2010 c++11 iterator

对于std::for_each调用,将两个迭代器都作为结束迭代器是否合法?例如,

std::vector<int> some_ints;
std::for_each(ints.end(), ints.end(), [&](int i) {
    std::cout << i;
});

1 个答案:

答案 0 :(得分:3)

是的,这是完全合法的,并产生一个空的范围。结果是没有任何反应,但行为定义明确。

以下是关于迭代器的SGI参考页面的相关引用及其作为范围的使用(Documentation

  

大多数算法不是根据单个迭代器表示,而是根据迭代器的范围表示;符号[first,last]指的是从最后到最后一个但不包括最后的所有迭代器。请注意,范围可能为空,即 first和last可能是相同的迭代器。