未排序向量上的lower_bound/upper_bound
lower_bound/upper_bound on unsorted vector
const std::vector<int> v = {5, 7, 3, 6, 5, 4, 7, 8, 5, 6};
auto low = std::lower_bound( v.begin(), v.end(), 7);
auto high = std::upper_bound( v.begin(), v.end(), 7);
std::cout << low - v.begin() << " " << high - v.begin();
因此,当我尝试在Mac上使用clang++编译器编译此代码时,它会将输出返回为
10 10
这意味着对于高和低都是CCD_ 1,尽管低应该是=1并且高=7(数字8(。我做错了什么?
std::lower_bound
和std::upper_bound
要求对范围进行"排序"(根据谓词和实际给定的值进行划分(,但实际情况并非如此。
相关文章:
- 空集"Out of bound iterator"
- 使用多个文件时"array bound is not an integer constant before ']' token"
- "A reference may be bound only to an object",为什么"const int &ref = 3;"有效?
- 如何修复"reference cannot be bound to dereferenced null pointer"警告
- GCC 检测"subindex out of bound"错误
- 如果我没有得到分段错误,如何找到"index out of bound"
- 一个程序将字符串Upper char更改为Lower char得到错误
- 在main中声明Array之前,Array bound不是整型常量
- 获取错误"array bound is not an integer constant before ']' token"
- 在运行时创建结构时"array bound is not an integer constant"
- 错误:无法将参数"1"的"char*"转换为"char**"到"int upper(char**)"