使用值范围作为键的字典对象

2023-12-14

我需要一本专门的词典。我的用例是这样的:用户想要指定值的范围(该范围也可以是单个点)并将值分配给特定范围。然后我们希望使用单个值作为键来执行查找。如果该单个值出现在某个范围内,那么我们将返回与该范围关联的值。

例如:

// represents the keyed value
struct Interval
{
    public int Min;
    public int Max;
}

// some code elsewhere in the program
var dictionary = new Dictionary<Interval, double>();
dictionary.Add(new Interval { Min = 0, Max = 10 }, 9.0);
var result = dictionary[1];
if (result == 9.0) JumpForJoy();

这显然只是一些代码来说明我正在寻找的内容。有谁知道实现这样的事情的算法?如果可以的话,他们能帮我指点一下吗?

我已经尝试实现自定义 IEqualityComparer 对象并在 Interval 上重载 Equals() 和 GetHashCode() 但到目前为止无济于事。但可能我做错了什么。


字典不是您所描述的操作的适当数据结构。

如果要求间隔永远不重叠,那么您可以构建一个间隔排序列表,然后二分查找它.

如果间隔可以重叠,那么你就有一个更难解决的问题。为了有效地解决这个问题,你需要构建一个区间树:

http://en.wikipedia.org/wiki/Interval_tree

这是一个众所周知的数据结构。请参阅“算法导论”或任何其他有关数据结构的像样的本科教材。

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

使用值范围作为键的字典对象 的相关文章

  • C/C++ 程序是在 CPU 上运行还是在内核上运行?

    我已经编程很多年了 但有一件事我一直不明白 有两种类型的编程语言 编译型语言和解释型语言 编译型语言首先需要编译成解释型语言 然后才能执行 例如 C C 需要先编译为机器语言 然后才能执行 我的问题来了 谁真正运行已编译的 C C Wind
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include
  • Windows CE 6.0 和运行时链接到调试 DLL /MDd

    我在 x86 PC 上使用 Windows CE 6 0 R3 我已经为该平台构建了 NK bin 和 SDK 但我有一些问题需要了解如何使用 MTd 调试 DLL 构建控制台应用程序 如果我尝试构建这个 main c with MDd i
  • 不能使用函数名称距离

    以下代码可以正常编译 include
  • 有没有办法让我的程序用更少的代码运行?

    我为学校作业编写了以下代码 它编译并打印所有正确的消息 但出于我自己的好奇心 我想知道我的代码是否可以缩短并且仍然有效 我尝试了 signal 而不是 sigaction 但我听说 sigaction 比 signal 更受青睐 此外 此任
  • 如何(可移植地)在 C 和 C++ 中获取 DBL_EPSILON

    我正在 Linux AS 3 上使用 GCC 3 4 并试图找出DBL EPSILON 或者至少是一个不错的近似值 我怎样才能以编程方式获取它 在 C 中是std numeric limits
  • 为什么 .Net 框架指南建议您不要使用 ref/out 参数?

    显然 他们很 混乱 这是认真的原因吗 你还能想到其他的吗 你见过有多少开发人员并不真正理解 ref out 吗 我在真正需要的地方使用它们 但在其他地方则不然 它们通常仅在您想有效返回两个或多个值时才有用 在这种情况下它至少值得thinki
  • 如何实现可变虚拟成员函数

    所以我有这个功能 virtual void CallRemoteFunction const char pServerGameObjectId const char pFunctionName OVariant arg1 OVariant
  • Math.Sin、Math.Cos 和 Math.Tan 精度以及正确显示它们的方法

    我正在用 C 编写一个计算器 textBoxResult是一个文本框 我在其中显示数字 recount是以度为单位获取角度并以弧度为单位返回的函数 我的角度是从texBoxInput public double recount int nu
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • C++ 中类型信息何时向后流动?

    我刚刚看了 Stephan T Lavavej 的演讲CppCon 2018关于 类模板参数推导 在哪里某个点 https youtu be H ut6j1BYU t 941他顺便说 在 C 中 类型信息几乎永远不会向后流动 我不得不说 几
  • 为什么 C++20 范围不只提供管道语法?

    我知道这个问题听起来很奇怪 所以这里有一些背景信息 最近 我很失望地了解到 C 20 范围内的映射缩减并不像人们所期望的那样工作 即 const double val data transform accumulate 不起作用 你必须这样
  • PARITY_NONE 是 C++ Windows 中的关键字吗?

    我正在使用 boost 编写一个串行库 并且我有一个枚举 enum parity t PARITY NONE PARITY ODD PARITY EVEN 我收到如下错误 错误 1 错误 C2059 语法错误 我无法弄清楚问题是什么 然后我
  • 您的 C++ 程序中是否仍然存在内存分配失败问题 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在为公司写一些指导方针 我需要回答一些棘手的问题 这一项是相当困难的 解决方案可以是 根本不跟踪 确保使用 new 分配对象 这会在分配失败
  • 如何在您的网站中连接两个人

    有一款名为 Verbosity 的游戏 这是一款有目的的游戏 位于此链接上www gwap com 在游戏中 他们随机连接两个玩家互相玩 游戏是玩家1应该向他的搭档 玩家2 描述一个单词 而玩家2应该猜测这个单词 我正在尝试建立一个网站来执
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty
  • 清理 TPL 中的 CallContext

    根据我使用的是基于 async await 的代码还是基于 TPL 的代码 我在逻辑清理方面得到了两种不同的行为CallContext 我可以设置和清除逻辑CallContext如果我使用以下异步 等待代码 正如我所期望的 class Pr
  • File.Move 的原子性

    我想将目录中的文件重命名为原子事务 该文件不会更改目录 该路径作为 NTFS 文件系统的 UNC 路径提供 可能位于服务器 03 或 08 上 File Move 对于这些目的来说是原子的吗 例如 它要么成功完成 要么失败 以使原始文件仍然

随机推荐

  • 在 iOS 10+ 中,有什么方法可以可靠地唤醒应用程序

    我已经这样做了三个多月了 我的头发都被拔掉了 所以请不要回复初学者的答案 我想知道 在 2017 年的 iOS 10 中 是否有任何方法可以将应用程序从终止状态唤醒 最好是通过蓝牙外围设备 但我会采取我能得到的 我认为终止的时间是用户在任务
  • 如何比较签名和未签名(并避免问题)

    最近我听说 C 中的有符号 无符号比较可能很棘手 例如 有符号 无符号比较还有其他一些问题 我的问题是 如果我们必须将有符号类型与无符号类型进行比较 例如 包括 gt 存在哪些策略可以避免这种比较产生的问题 或者我们应该确保我们总是只比较i
  • Magento 价格格式 - 2 或 3 位小数

    我需要将某些商品的价格设置为小数点后 3 位 我通过将 精度 变量更改为 3 来实现此目的 但这意味着网站上的每个价格都显示为小数点后 3 位 即 空购物车显示为 0 000 英镑 我只想在需要时显示小数点后第三位 但我不确定在代码库中哪里
  • 创建/追加节点与innerHTML

    有人有充分的理由使用其中一种而不是另一种吗 据我所知 创建 附加节点只是防止您创建无效代码 而innerHTML允许您一次注入多个节点 考虑到我需要插入几个标签 使用innerHTML似乎是有意义的 有人有不同的看法吗 这始终是一个有争议的
  • SaveMany 在 cakePHP 中同时更新多条记录不起作用

    我面临着使用 saveMany 同时更新多个记录的问题 我有如下关联 候选人hasMany候选人雇主 候选人雇主属于候选人 Candidate php 中的模型关联 public hasMany array CandidatesEmploy
  • 按顺序生成数字 Order

    我想生成由支票中输入的位置搜索的值 例如 如果输入 20 则函数应生成从 0 开始的数字 并继续按升序排列 直到创建 20 位数字 然后输出生成的数字字符串中第 20 位的值 01234567891011121314 即 4 我在下面尝试了
  • 主题已在云发布/订阅上创建,但无法创建该主题的监视

    我想在云发布 订阅主题上创建监视 但无法创建它 为此 我正在使用其余请求 request Req post url https www googleapis com gmail v1 users me watch headers conte
  • MapView Pin 注释的问题 - 当地图缩放/平移/区域更改时 Pin 会失去颜色

    我有一个显示现金点位置的地图视图 注释将被删除 并且可以单击标注以转到包含有关该位置的更多详细信息的页面 提款机分为免费和付费两类 免费提款机的针脚为绿色 另一种为红色 当别针掉落时 它们的颜色是正确的 一切正常 直到我缩放到用户位置或地图
  • 如何删除子列表

    如何从列表中删除所有出现的子列表 例如 List 1 2 3 4 5 6 7 4 8 9 10 5 removeSubList 4 5 应该删除所有出现的 4 5 按此顺序 因此它返回 List 1 2 3 6 7 4 8 9 10 5 使
  • 无法跨选项卡查看本地存储事件

    我正在尝试创建一个简单的概念验证 涉及在发生更改时使用 localStorage 在我的应用程序中触发选项卡 根据我看过的其他文章 我知道这是可能的 我明白the spec声明该事件将在每个页面上触发except我现在使用的那个 这实际上就
  • 视图始终执行 HTTP GET 而不是提交时发布

    我一直无法弄清楚为什么会发生这种情况 在我所在的每个简单视图上 当我单击提交按钮时 请求总是被路由回控制器并触发视图的 HTTPGET 方法 我什至尝试使用 POST 对表单标签进行硬编码 但它仍然发生 这似乎是某种路由问题 但我不确定下一
  • 如何从数据框中选择不匹配的行?

    我试图识别数据框中不匹配的值 但不知道如何执行此操作 make data frame a lt data frame x c 1 2 3 4 b lt data frame y c 1 2 3 4 5 6 select only value
  • Javascript 硬币兑换/找零算法

    所以我一直在尝试用 Javascript jQuery 创建一个程序 将一定数量的钱分成最小数量的美元钞票 到目前为止 该计划仅适用于一项法案 我不太确定如何实施其余法案 需要在正确的方向上推动 var bills 5 10 20 50 1
  • 如何强制一个类恰好具有给定属性之一

    我有一个 Person 类和一组数据属性 First Name Surname Gender DoB Country of Birth 数据属性的 Domains 设置为 Person 我想在我的本体论中建立一条规则 规定每个人must恰好
  • jquery 淡入回调不等待

    我试图让一个 div 淡出 然后让第二个 div 淡入其位置 但是第二个 div 淡出的回调似乎不会等待第一个 div 完成淡出 事实上它们都同时淡出时间提供交叉淡入淡出效果而不是淡出然后再淡出 继承人的代码 document ready
  • python脚本输出末尾的百分号[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 为什么 python 脚本的输出末尾有一个百分号 echo 测试测试 修剪测试一下 usr bin env python import sys if name main for lin
  • Django:重定向到上一页并保持滚动位置

    我见过this问题是您可以使用以下命令重定向到上一页 return HttpResponseRedirect request META get HTTP REFERER 但有没有办法也保持滚动位置呢 上面的内容重新加载页面 经过一番来回 这
  • MySql 查询从表中找出前 50% 的记录

    我正在尝试从 MySQL 表用户获取前 50 的记录 我知道我们可以使用 limit 或 top 来查找它们 但记录总数不固定 因此对 limit 或 top 中的实际数量进行硬编码并不能给出前 50 的记录 我怎样才能实现这个目标 如果您
  • 根据父宽度定位绝对顶部属性

    有以下 HTML div class child of body This is a text div 和以下 CSS child of body position absolute top 10 我可以设置top所选元素的值 我看到10
  • 使用值范围作为键的字典对象

    我需要一本专门的词典 我的用例是这样的 用户想要指定值的范围 该范围也可以是单个点 并将值分配给特定范围 然后我们希望使用单个值作为键来执行查找 如果该单个值出现在某个范围内 那么我们将返回与该范围关联的值 例如 represents th