2011-08-16 77 views
3

對於std::for_each調用,兩個迭代器都是最終迭代器是合法的嗎?例如,for_each中的端到端

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

回答

3

是的,這是完全合法的,併產生一個空的範圍。結果將是什麼都沒有發生,但行爲已經很好地定義了。

下面是從SGI參考頁上的迭代器相關的報價和他們的範圍使用(Documentation

大多數算法都表示不能在一個迭代器方面,而且在一系列的迭代器的條件;符號[first,last)表示從第一個到最後一個,但不包括最後一個的所有迭代器。請注意,範圍可能爲空,即第一個和最後一個可能是相同的迭代器。