如果比较 float ,我认为不能只使用等于==,需要检查是否abs(a-b) < epsilon。那么当使用float类型的value作为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 (第一个元素大于给定键)。
所以使用floats 和doubles 是相当安全的。
关于c++ - 在多映射中用作键的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31956717/