Pregunta

Tengo varias funciones en un programa que estoy escribiendo que usan un valor que necesito calcular con una función muy lenta.Este valor cambiará cada vez que se vuelva a ejecutar el programa, por lo que no puedo simplemente almacenar un valor estático.A continuación se muestra un ejemplo.

void this_gets_called_frequently()
{
    static int value = slow_function();

    //do stuff with the above value
}

Mi principal problema aquí no es que el programa no funcione, sino más bien la limpieza.Realmente no quiero inicializar una variable global y almacenar el valor en ella, ya que no cambiará una vez calculada.¿Usar la palabra clave estática de la manera que se muestra arriba solo llamaría a la función anterior para que se calcule una vez?¿Sería útil agregar una palabra clave constante allí?

¡Gracias a todos, esto fue respondido perfectamente!

¿Fue útil?

Solución

Sí, una inicialización de local. static La variable ocurrirá como máximo una vez (aunque recuerdo que algunas versiones del compilador podrían tener problemas con subprocesos múltiples aquí).const no es obligatorio, en este caso es principalmente una cuestión de legibilidad y gusto.

Otros consejos

¿Utilizaría la palabra clave estática de la manera que se muestra arriba solo llame a la función anterior para que se calcule una vez?

Sí, en la primera invocación de this_gets_called_frequently

¿Se agregaría una palabra clave const que se agrega AYUDA?

no.Pero agregue const para el valor de la documentación.

Uso puede usar las variables locales del hilo de C ++ 11, si están disponibles en su compilador.Si está en Windows, puede usar una API similar TlsAlloc.Está allí desde el amanecer de Win32.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top