用于查找最后一项小于或等于的函数,例如 lower_bound

2024-02-14

是否有一个使用二分搜索的函数,例如lower_bound但这会返回last item 小于或等于根据给定的谓词?

lower_bound定义为:

找到的位置first有序范围内具有值的元素大于或等于指定值,其中排序标准可以由二元谓词指定。

and upper_bound:

找到的位置first有序范围内的元素,其值为比...更棒指定值,其中排序标准可以由二元谓词指定。

具体来说,我有一个按时间排序的事件的容器,在给定的时间内,我想找到之前或当时出现的最后一个项目。我可以通过上/下界、反向迭代器和使用的某种组合来实现这一点吗std::greater or std::greater_equal ?

编辑: 如果您在数组开始之前询问一个点,则需要对 user763305 的建议进行调整以应对:

iterator it=upper_bound(begin(), end(), val, LessThanFunction());
if (it!=begin()) {
  it--; // not at end of array so rewind to previous item
} else {
  it=end(); // no items before this point, so return end()
}
return it;

在排序容器中,最后一个元素小于或等于x, 是第一个大于的元素之前的元素x.

因此你可以打电话std::upper_bound,并将返回的迭代器递减一次。 (在递减之前,您当然必须检查它是否不是开始迭代器;如果是,则不存在小于或等于的元素x.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于查找最后一项小于或等于的函数,例如 lower_bound 的相关文章

  • 是否有与 posix_memalign 对应的 C++ 版本?

    当我打电话时posix memalign http man7 org linux man pages man3 posix memalign 3 html为类型的对象分配对齐的内存Foo在我的 C 代码中 我需要做一个reinterpret
  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • SQL中调用动态函数名

    是否可以在 SQL 中调用具有动态名称的函数 例如 SELECT functionid SELECT results FROM dbo Function functionid AS results FROM List of Function
  • Jersey 2.x:如何在 RESTful 客户端上添加标头

    我已经看过了如何使用 Jersey Client API 在 RESTful 调用上添加标头 https stackoverflow com questions 18342456 how to add headers on restful
  • SQL Server 应用程序在 32 位和 64 位 SQL Server 版本之间的可移植性?

    我有一个当前正在针对 32 位 SQL Server 2005 标准版数据库运行的应用程序 由于我在此不赘述的原因 我需要将数据库移至在 64 位 Windows Server 2003 R2 Datacenter 上运行的 64 位 SQ
  • 使用 BouncyCastle 从文件中读取椭圆曲线私钥

    BouncyCastle 加密 API 允许使用常规方法创建和验证数字签名java security封装对象 例如java security PublicKey java security PrivateKey和他们的容器java secu
  • 我可以使用 socket.io-client 连接到标准 websocket 吗?

    尝试使用socket io client连接到用Go编写的websocket服务器 我已使用节点 WebSocket 库成功连接 npm https www npmjs org package ws 所以工作的 Websocket 代码如下
  • 解压一个类[重复]

    这个问题在这里已经有答案了 我想创建一个类来像字典一样解压它的对象 例如 使用字典 您可以这样做 foo a 1 b 2 def bar a b return a b bar foo outputs 3 我希望能够做到这一点 class F
  • “authenticate_user!”的设计实现在哪里?方法?

    设计实施在哪里authenticate user method 我一直在寻找 至今还没有找到 It s in lib devise controllers helpers rb1 https github com plataformatec
  • 如何将ListView分成多个部分并加载?

    我想知道我该如何划分我的ListView分成几部分 当用户启动我的应用程序时仅显示其中的一部分 并在用户按下名为 加载更多项目 的按钮时显示其他部分 我有一个包含 500 多个项目的大列表 并考虑将其分成几个部分 以便可以快速加载 我想要类
  • JQuery Datepicker:如果所选日期是今天的日期

    我可以使用以下方法确定所选日期是否是过去的日期 var due date due date val if new Date due date getTime lt new Date getTime do stuff 这工作正常 我使用以下内
  • 标签栏内存管理

    一个基于选项卡栏的应用程序 具有 5 个选项卡切换选项 我该如何有效地管理内存 选项卡之间的切换非常频繁我如何管理这种情况 or 无论如何 所有选项卡都会保持活动状态 但这是一个糟糕的选择 请详细描述有关标签栏内存管理的信息 让 UIKit
  • 在 VBA Excel 中复制和粘贴循环以实现多个输出

    所以我有以下 Excel 选项卡 代码 1 代码 2 代码 3 LI 2015 2016 2017 2018 2019 2015 年输出等 对于 2015 年 我在 2015 选项卡中有一个表 其中包含 10 行 3 个代码及其各自的 值的
  • 在按钮上移动手指时更改 textView

    在我的应用程序中 我有一个 Activity 其中有 9 个按钮和 1 个按钮textView 我正在利用OnTouchListener更改中的文本textView当我在按钮上移动手指时 This is what my activity l
  • linux C++ 串口回显输出

    在我的程序中 将字节发送到串行端口 我收到发送的字节 我不想接收我发送的字节 并且我不知道该怎么做 include
  • 使用 iframe 的内容在页面上执行 jquery .click()

    如果可能的话 我可以单击 iframe 中的某个元素并让它在呈现它的页面上执行某个功能吗 例如 div class page the source will render div class clickme div 同时 回到主页 div
  • 调试 javascript 中的闭包

    当我尝试调试有很多闭包的 JavaScript 代码时 我会设置断点 然后我去看堆栈 但大多数时候我只看到一个充满匿名函数的调用堆栈 这对我来说是一场噩梦 在 javascript 中调试闭包的最佳方法是什么 您可以为回调函数添加名称 这样
  • UISearchDisplayController 的正确实例化

    我做了一些搜索 但答案仍然不清楚 我正在尝试在 TableViewController TVC 内创建 UISearchDisplayController 的实例 在我的 TVC 的标题中 我将 searchDisplayControlle
  • 如何完全关闭 TBB 代码中的线程

    注意 这不是重复的这个问题 https stackoverflow com questions 3786408 number of threads used by intel tbb 给定一个与 TBB 并行的复杂软件 我如何完全关闭线程
  • VS2010中的vcbuild在哪里?

    我已经升级到 VS2010 正在寻找 vbuild 可执行文件 对于 VS2008 它位于 C Program Files x86 Microsoft Visual Studio 9 0 VC vcpackages vcbuild exe
  • Git 说分支已合并,但显然不存在更改

    我已经让自己陷入了一种对我来说毫无意义的境地 我会尽力描述它 我有一个开发分支 我已通过以下方式将 master 合并到其中git checkout develpment git merge master 我在这里没有遇到任何合并冲突 有一
  • 用于查找最后一项小于或等于的函数,例如 lower_bound

    是否有一个使用二分搜索的函数 例如lower bound但这会返回last item 小于或等于根据给定的谓词 lower bound定义为 找到的位置first有序范围内具有值的元素大于或等于指定值 其中排序标准可以由二元谓词指定 and