Using std:: lower_bound
Using std:: lower_bound
// lower_bound/upper_bound example
#include <iostream> // std::cout
#include <algorithm> // std::lower_bound, std::upper_bound, std::sort
#include <vector> // std::vector
int main () {
int myints[] = {10,20,30,30,20,10,10,20};
std::vector<int> v(myints,myints+8); // 10 20 30 30 20 10 10 20
std::sort (v.begin(), v.end()); // 10 10 10 20 20 20 30 30
std::vector<int>::iterator low,up;
low=std::lower_bound (v.begin(), v.end(), 20); // ^
up= std::upper_bound (v.begin(), v.end(), 20); // ^
std::cout << "lower_bound at position " << (low- v.begin()) << 'n';
std::cout << "upper_bound at position " << (up - v.begin()) << 'n';
return 0;
}
在此代码中,有人可以解释为什么我们需要在底部的第三行和第四行做(low - v.begin())和(up - v.begin())。
如果我这样做
cout << low << endl;
我收到以下我不明白的错误
cannot bind ‘std::ostream {aka std::basic_ostream}’ lvalue to ‘std::basic_ostream&&’
*low * 是你声明的迭代器。它保存PC生成的内存地址,您无需任何内存地址即可返回。通过写作
low- v.begin()
向程序发出命令,以返回搜索查询的实际位置作为答案。
这就是为什么它返回一个值
Address Position - Beginning of the Vector Position
假设您的向量起始内存地址是 FFF1,您的搜索值是 FFF8 ...然后它返回 FFF8 - FFF1 = 7 ..(例子只是为了说明)
这就是我的理解.
这两个减法分别通过计算迭代器v.begin()
和迭代器low
和up
之间的增量来计算在向量中low
和up
位置找到的元素的偏移量。为了使这段代码更清晰,最好使用 std::d istance。
当您尝试使用cout << low << endl;
时,您正在尝试打印出迭代器的值。这是非常不同的。哦,你缺少 std:: 命名空间引用围绕 cout
和 endl
.
相关文章:
- 空集"Out of bound iterator"
- 将张量的"lower diagonal"映射到矩阵,作为将矩阵的下三角形部分提取到向量的推广
- 为什么<<低;和 cout<<v.begin;单独给出错误,但 cout <<(lower.begin());没有给出任何错误,并使代码易于编译
- 使用多个文件时"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"警告
- 当你有一个像 ::lower 这样的参数时,这在C++中是什么意思
- GCC 检测"subindex out of bound"错误
- 如果我没有得到分段错误,如何找到"index out of bound"
- 一个程序将字符串Upper char更改为Lower char得到错误
- std:: lower的行为在不同的语言环境中是如何变化的?
- 在main中声明Array之前,Array bound不是整型常量
- 获取错误"array bound is not an integer constant before ']' token"
- 如何在C或c++中获得与Java中的toLowerCase或Python中的string.lower()相同的结果
- 在运行时创建结构时"array bound is not an integer constant"