Hay muchas sugerencias relacionadas con la caja del conmutador. En términos de eficiencia, esto podría ser mejor, podría ser lo mismo. No será peor
Pero si solo está configurando/devolviendo un valor o nombre basado en la ID, entonces SÍ. Un mapa es exactamente lo que necesitas. Los contenedores STL están optimizados, y si crees que puedes optimizarlos mejor, entonces eres increíblemente inteligente o asombrosamente tonto.
por ejemplo una sola llamada con un std :: mapa llamado myMap,
thisvar = mymap[x.getID()];
es mucho mejor que 50 de estos
if(x.getID() == ...){thisvar = ...;}
porque es más eficiente ya que el número de ID de aumentos. Si está interesado en por qué, busque un buen manual sobre estructuras de datos.
Pero lo que realmente consideraría aquí es el tiempo de mantenimiento/reparación. Si necesita cambiar el nombre de la variable, o cambiar de usar getID() o getName(), o hacer cualquier tipo de cambio menor, debe hacerlo CINCUENTA VECES en su ejemplo. Y necesita una nueva línea cada vez que agrega una identificación.
El mapa reduce eso a un cambio de código SIN IMPORTAR CUANTAS IDENTIFICACIONES TIENE.
Dicho esto, si realmente lleva a cabo diferentes acciones para cada ID, una caja de conmutadores podría ser mejor. Con mayúsculas y minúsculas en lugar de declaraciones if, puede mejorar el rendimiento y la legibilidad. Vea aquí: Advantage of switch over if-else statement Evitaría los punteros a las funciones a menos que tenga muy claro cómo mejorarían su código, porque si no está 100% seguro de lo que está haciendo, la sintaxis puede estar en mal estado, y es exagerado para cualquier cosa con la que se pueda usar un mapa.
Básicamente, me interesaría el problema que está tratando de resolver. Puede que te vaya mejor con un mapa o una caja de cambios, pero si crees que puedes usar un mapa, eso es ABSOLUTAMENTE lo que deberías usar en su lugar.
¿En serio tiene 50 si las declaraciones en una fila? Creo que un 'bucle' podría estar en orden ... –
Debe agregar lo que hace en sus declaraciones if. Por cierto, para el marcado de código, seleccione el código y use el botón '010' o simplemente sangría el código en 4 espacios. –
[eliminado para mayor claridad] –