在c ++ map中查找浮动键的优化

时间:2013-12-11 12:09:23

标签: c++ performance map double stdmap

我想问一个与此相关的问题:Floating point keys in std:map

我创建一个带有double的std :: map作为其他类型MyType的键,即:

map<double,MyType> myMap;

我的问题是:  鉴于myMap.find(...)是std :: map的优化查找键的方式(参见How sets, multisets, maps and multimaps work internally),Floating point keys in std:map中的方法是否显着未被优化?我可以实现更有效的方法吗?

2 个答案:

答案 0 :(得分:1)

它没有明显的优化。首先,对于所有操作,渐近复杂度将是相同的(O(log(n))),只有比较将是一个较慢的常数因子。事实上,我认为你不能做得更好,因为你不能以任何更好的方式同时进行双打比较。

答案 1 :(得分:1)

STL容器在满足标准定义的性能要求的意义上进行了“优化”。虽然人们不能说它们是完美的,但要求已经非常紧张(即O(log(N))用于地图中的元素搜索),因此重新实现它们将是一件非常不知情的工作。我会说,最好选择最适合你的那个并保留原样。