C++ STL上界定义不一致?
各国: …它尝试在有序范围[first,last]中查找元素值。上界返回[first,last]中最远的迭代器i,因此,对于[first,i]中的每个迭代器j,值<*j为falseC++ STL上界定义不一致?,c++,stl,C++,Stl,各国: …它尝试在有序范围[first,last]中查找元素值。上界返回[first,last]中最远的迭代器i,因此,对于[first,i]中的每个迭代器j,值 SGI文档是不相关的。C++标准是你应该阅读的。引用C++ 11×25.4.3.2: 返回:范围[first,last]中最远的迭代器i,这样对于范围[first,i)中的任何迭代器j,以下相应条件保持不变:!(value
但是,如果我们有一个包含数字1、2和3的
向量v
,调用上界(v.begin(),v.end(),5)
将返回v.end()
。但是根据定义,v.end()
不在[v.begin,v.end()范围内没有这样的迭代器符合定义中的要求。定义是懒惰的,没有明确地说明在这种情况下会发生什么?< P> SGI文档是不相关的。C++标准是你应该阅读的。引用C++ 11×25.4.3.2:
返回:范围[first,last]
中最远的迭代器i
,这样对于范围[first,i)
中的任何迭代器j
,以下相应条件保持不变:!(valuecomp(value,*j)=false
PICHMAH:公平的观点,但我从来没有看到任何人真正意味着SGI STL,所以我假设OP是标准库算法。我的问题是在SGI STL中的措辞,但是我现在的困惑已经消除了,我看到C++标准是明确的。你还不够大;)