呼如林

因此在使用double作为键时存在一些问题std::map。首先,NaN比它本身少的是一个问题。如果有NaN插入的机会,请使用以下方法:struct safe_double_less {  bool operator()(double left, double right) const {    bool leftNaN = std::isnan(left);    bool rightNaN = std::isnan(right);    if (leftNaN != rightNaN)      return leftNaNauto my_equal_range( Container&& container, double target, double epsilon = 0.00001 )-> decltype( container.equal_range(target) ){  auto lower = container.lower_bound( target-epsilon );  auto upper = container.upper_bound( target+epsilon );  return std::make_pair(lower, upper);}适用于std::map和std::set(和multi版本)。(在更现代的代码库中,我希望range>从equal_range函数返回的对象更好。但是现在,我将使其与兼容equal_range)。这将查找一系列其关键字“足够接近”您所要求的事物的容器,而容器在内部维护其排序保证,并且不执行未定义的行为。要测试密钥是否存在,请执行以下操作:templatebool key_exists( Container const& container, double target, double epsilon = 0.00001 ) {  auto range = my_equal_range(container, target, epsilon);  return range.first != range.second;}并且如果您要删除/替换条目,则应处理可能有多个条目命中的可能性。较短的答案是“不使用浮动点值作为键std::set和std::map”,因为它是一个有点麻烦。如果确实对std::set或使用浮点键std::map,则几乎可以肯定不要对它们执行.find或[],因为极有可能是错误的来源。只要确切的顺序无关紧要(即,一个特定的1.0在前面或后面,或者与另一个1.0完全在同一位置),就可以将其用于自动排序的东西集合。即使那样,我还是要使用多贴图/多集,因为依靠碰撞或缺乏碰撞并不是我要依靠的东西。很难对IEEE浮点值的确切值进行推理,并且依赖它的代码的脆弱性很常见。

map std 浮点数索引_std:map中的浮点键相关推荐

  1. map std 浮点数索引_C std :: map持有任何类型的值

    Blindy的答案非常好(1),但只是为了完成答案:通过使用动态继承,还有另一种方法可以在没有库的情况下完成: class MyFieldInterface { int m_Size; // of c ...

  2. mysql删除没有索引页_InnoDB中没有主键是如何运转的

    InnoDB聚簇索引的背景 在InnoDB索引页的物理结构中,"我"讲述了"InnoDB中一切都是索引".这意味着每个InnoDB引擎的表必须有一个" ...

  3. c语言中std::map_在现代C ++中明智地使用std :: map

    c语言中std::map std::map and its siblings(std::multimap, std::unordered_map/multimap) used to be my fav ...

  4. std的list, vector, map,multimap, set 区别与用法比较

    List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...

  5. java list转成map对象_将List集合中的map对象转为List对象形式--封装类

    importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;impo ...

  6. Map集合练习之对字符串中字母出现的次数求和

    代码需求 如有这么一个字符串 String str = "fdg+avAdc bs5dDa9c-dfs"; MapTest.java package zhouls.bigdata. ...

  7. 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )

    文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...

  8. 【java基础】map的基本使用与字符串中每个字符出现的次数统计

    Map集合概述和特点 Map集合概述 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 键值对映射关系 一个键对应一个值 键不能重复,值可以重复 元素存取 ...

  9. Qt C++中 Map 和 List 转换到 QML 中使用

    前言 C++中的 list 和 map 使用非常方便, 对应到 Qt 中的类型为 QList 和 QMap,在和 QML 交互的时候,可能也想用到这两个类型,或者说将 C++中的参数和 QML 中的参 ...

最新文章

  1. 基于FPGA的以太网开发
  2. 艾伟_转载:使用LINQ to SQL更新数据库(上):问题重重
  3. eclipse开发java程序,断点调试
  4. Web容器和Servlet生命周期
  5. 用JAVA Excel API 实现对Excel表格的读写更新 (转)
  6. Kotlin 输出“Hello World”
  7. Mac版微信支持朋友圈了!微信内测版体验感
  8. 为 macOS Monterey 优化,有了快捷指令,这些软件效率倍增
  9. 大数据学长面试之华为面试题
  10. ps入门第8天_ps通道_颜色通道Alpha通道 案例:通道抠图
  11. 花生壳实现内网穿透教程
  12. 软件工程教程:第7章软件维护 课后习题
  13. 地表最强!北大清华合力打造通用人工智能实验班,朱松纯教授领衔
  14. 通过python刷android步数,使用 Python 修改微信/QQ/支付宝运动步数
  15. 【C#进阶二】C#中的正则表达式知识总结(字符转义/字符类/ 定位点/ 分组构造 /数量词/反向引用构造/替换构造/替代/正则表达式选项)(理论篇)
  16. Python认证现已生效,并且其他freeCodeCamp 7.0版课程更新
  17. curl+openssl,编译win32 兼容xp系统的静态库
  18. Html5 Egret游戏开发 成语大挑战(六)游戏界面构建和设计
  19. 一个女大学生骂她男朋友的话,厉害,没一个脏字
  20. vue 项目node服务器部署流程

热门文章

  1. 如何利用深度学习知识--快速部署高速目标检测智能小车?
  2. Kubernetes 1.14 版本发布:正式支持Windows 节点,持久化本地卷进入GA
  3. 第十一周作业关于json
  4. VIEW层AJAX提交表单到Controller的实体(AJAX传递序列化的输入元素)
  5. Zabbix安装配置(CentOS7.3)
  6. 2017年2月7日 今年第一天上班了
  7. hdu 5945 Fxx and game
  8. 玩转 iOS 开发:《iOS 设计模式 — 工厂模式》
  9. Ubuntu 16.04源码编译安装nginx 1.10.0
  10. SQL语句的增删改查