Teclas de punto flotante en estándar: mapa

El siguiente código debe encontrar la clave3.0en unstd::map que existe. Pero debido a la precisión de coma flotante no se encontrará.

map<double, double> mymap;
mymap[3.0] = 1.0;

double t = 0.0;
for(int i = 0; i < 31; i++)
{
  t += 0.1;
  bool contains = (mymap.count(t) > 0);
}

En el ejemplo anterior,contains siempre seráfalse. Mi solución actual es simplemente multiplicart por 0.1 en lugar de agregar 0.1, así:

for(int i = 0; i < 31; i++)
{
  t = 0.1 * i;
  bool contains = (mymap.count(t) > 0);
}

Ahora la pregunta:

Hay una manera de presentar una FuzzyCompare a lastd::map si usodouble ¿llaves? La solución común para la comparación de números de coma flotante suele ser algo así comoa-b < epsilon. Pero no veo una manera directa de hacer esto constd::map. ¿Realmente tengo que encapsular ladouble escriba una clase y sobrescribaoperator<(...) para implementar esta funcionalidad?

Respuestas a la pregunta(5)

Su respuesta a la pregunta