lower_bound(v.begin(), v.end(), x)
lower_bound(v.begin(), v.end(), x)
我是一个c++新手,我刚刚看到这段代码
x = v[lft]+k;
low = lower_bound(v.begin(), v.end(), x) - v.begin();
if(low >= n|| v[low] > x )
low--;
center = v[low];
如果x不存在于vector中,则返回一个大于vector大小的值。这证明搜索low >= n
是合理的,但是我不知道在什么情况下v[low] > x
会满足这个条件?low
不应该是一个x存在的索引吗,那么怎么可能有一个大于x的值呢?
lower_bound
返回
一个迭代器指向
[first, last)
范围内不小于(即大于或等于)的第一个元素。
查看此处获取更多详细信息:lower_bound - cppreference
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 反转依赖于 end() 的迭代器
- std::multimap<std::chrono::milliseconds, T>::rbegin 在 MSVS-13 中指向 end()?
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 了解向量中的 .begin 和 .end
- 如何实现链表的 end()?
- 使用 map.end() 访问 map 的最后一个元素
- C++ const char with .begin() and .end()
- 接收"Error compiling: 0:1(1): error: syntax error, unexpected $end" C++、GLSL、着色器文件
- 为什么 std::find( s.begin(), s.end(), val ) 比集合 s 的 s.find(val) 慢 1000 倍<int>?
- 如何使用vector.begin()和vector.end()遍历矩阵?
- 我当前实现的双向链表类是否需要重构迭代器 end() 功能?
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- 在不使用vector.end()的情况下迭代std::vector
- 编译代码时"[Warning] extra tokens at end of"