c++ - 在多映射中用作键的浮点值

标签 c++ multimap

如果比较 float ,我认为不能只使用等于==,需要检查是否abs(a-b) < epsilon。那么当使用float类型的v​​alue作为key时,是否可以使用equal_range函数呢?

例如:

std::multimap<float, string>  ds;
ds.insert(make_pair(2.0, string("a")));
ds.insert(make_pair(2.0, string("b")));
ds.insert(make_pair(3.0, string("d")));
ds.equal_range(2.0)

最佳答案

std::multimap::equal_range实际上不是使用 operator== 计算的根本。它是使用 < 计算的和 >只要。它实际上是两个迭代器,第一个是 std::multimap::lower_bound (第一个元素 不小于 给定的键),第二个元素是 std::multimap::upper_bound (第一个元素大于给定键)。

所以使用floatsdoubles 是相当安全的。

关于c++ - 在多映射中用作键的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31956717/

相关文章:

java - Android 上的 Google Collection

c++ - Sonarqube c++ 语法错误跳过 __namespace

C++ 数组(忽略重复数)

JAVA如何迭代map的map中的值

c++ - 使用std::multimap时c++发生运行时错误的机会很小

java - 从 multiMap 移除

c++ - 什么规则控制将 static_cast<float> 应用于 double 的舍入行为?

c++ - 使 "Makefile"看起来更好

c++ - 错误 : variable was not declared in this scope

java - 如何从平面 SQL 选择结果集创建嵌套映射