2014-12-25 24 views
0

我想了解在C++標準是否允許有效調用std::upper_bound,範圍是容器的end()到它的end()什麼是std :: upper_bound在一個空的結束範圍內定義的行爲?

換句話說,空範圍[end(),end())的有效範圍是多少? end()從本身到達? C++ 98中的答案在C++ 11中保持不變嗎?

+0

如果不允許空範圍,那就是缺陷。所以這個問題涉及(1)尋找相關語言,如果找不到,(2)尋找缺陷報告。你有嘗試過嗎? –

回答

1
[first, last) 

標準說[first, last)不是一個有效的範圍內,如果首先是在範圍內的最後後面。這使得[cont.end(), cont.end()]的有效範圍。但是,算法不適用於這些範圍。 對於e.g: -

std::reverse(cont.end(), cont.end()); 

只是一個空操作,而不是不確定的行爲。

相關問題