我试图在C ++中理解标准是否允许调用std::upper_bound
作为有效范围,其范围是容器的end()
到end()
?
换句话说,空范围[end()
,end()
)是否有效范围? end()
是否可以自行访问? C ++ 98中的答案与C ++ 11中的答案是否相同?
答案 0 :(得分:1)
[first, last)
标准表示如果首先位于范围中的最后一个后面,则[first, last)
不是有效范围。这使[cont.end(), cont.end()]
成为有效范围。但是,算法对于这些范围是无操作的。
例如: -
std::reverse(cont.end(), cont.end());
只是一种无操作而非未定义的行为。