std :: upper_bound在空端范围内的定义是什么?

时间:2014-12-25 07:25:05

标签: c++ range std stl-algorithm

我试图在C ++中理解标准是否允许调用std::upper_bound作为有效范围,其范围是容器的end()end()

换句话说,空范围[end()end())是否有效范围? end()是否可以自行访问? C ++ 98中的答案与C ++ 11中的答案是否相同?

1 个答案:

答案 0 :(得分:1)

[first, last)

标准表示如果首先位于范围中的最后一个后面,则[first, last)不是有效范围。这使[cont.end(), cont.end()]成为有效范围。但是,算法对于这些范围是无操作的。 例如: -

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

只是一种无操作而非未定义的行为。