STL upper_bound的定义不一致?

Mat*_*att 0 c++ stl

upper_bound状态的文档:

...它试图在有序范围内找到元素值[first,last] ... upper_bound返回[first,last]中最远的迭代器i,这样,对于[first,i)中的每个迭代器j,value <*j是假的.

但是,如果我们有一个vector<int> v包含数字1,2和3,upper_bound(v.begin(), v.end(), 5)则会返回调用v.end().但基于定义,v.end()不在范围内[v.begin, v.end()).没有这样的迭代器符合定义中的要求.这个定义是否只是懒惰而没有明确说明在这种情况下会发生什么?

ild*_*arn 11

SGI文档不相关 - 您应该阅读C++标准.引用C++11§25.4.3.2:

返回:i范围中的最远迭代器,[first,last]以便对于范围中的任何迭代器j,[first,i)以下相应条件成立:!(value < *j)comp(value, *j) == false.

  • @PlasmaHH:公平点,但我从来没有看到任何人真正意味着SGI STL,所以我假设OP指的是标准库算法. (3认同)
  • @ildjarn:你还不够年纪;) (2认同)