gpt4 book ai didi

c++ - 按时间范围向 std::map 添加内容,但按时间值查询

转载 作者:行者123 更新时间:2023-11-30 02:52:34 26 4
gpt4 key购买 nike

我正在设置一个 std::map 对象,它将一系列时间范围(键)链接到对象。

我的目的是确保不会将两个重叠的时间范围值添加到此映射中 - 我知道我可以通过创建一个比较器函数来做到这一点,如果存在重叠则返回 true 并将其作为第三个比较器模板传递项目到 std::map。

但是,我想根据单个时间点而不是范围来查找值。

我想我需要覆盖一个运算符,但我不确定是哪个 - 有什么想法吗?

我需要加快速度,因为我认为办公室即将关闭,因此对于任何缺少细节/代码的情况深表歉意。

最佳答案

当您比较两个范围时,您有三种可能的结果:

  1. 第一个在第二个之前开始和结束。
  2. 第一个在第二个之后开始和结束。
  3. 两者重叠。

您需要编写比较函数以反射(reflect)这种关系。

bool RangeLess(const range &r1, const range &r2)
{
return r1.end < r2.start;
}

这很容易,不是吗?如果有任何重叠,RangeLess(r1,r2)RangeLess(r2,r1) 都将返回 false,这两个将被考虑相等的。如果 map 中已有等效项,则尝试插入 map 将失败。

要查找单个时间,请使用起始值和结束值相同的范围。

关于c++ - 按时间范围向 std::map 添加内容,但按时间值查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18748515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com