A fin de dar funciones la opción de modificar el vector no puedo hacerC++ Vector en/[] velocidad del operador
curr = myvec.at(i);
doThis(curr);
doThat(curr);
doStuffWith(curr);
pero tengo que hacer:
doThis(myvec.at(i));
doThat(myvec.at(i));
doStuffWith(myvec.at(i));
(como el respuestas de mi otra pregunta señalaron)
voy a hacer un montón de llamadas al infierno
myvec.at()
continuación. ¿Qué tan rápido es, en comparación con el primer ejemplo que usa una variable para almacenar el resultado?¿Existe una opción diferente para mí? ¿De alguna manera puedo usar punteros?
Cuando se pone serio habrá miles de llamadas a myvec.at()
por segundo. Entonces, cada pequeño comedor de rendimiento es importante.
Además de las consideraciones de rendimiento, pregúntese qué está ganando usando 'at()' en lugar de '[]'. Bounds comprobar en los índices es bueno para la depuración, pero '[]' * también * hace esto cuando su compilación en modo de depuración, y utilizando 'at()' en lugar de '[]' no es un sustituto para escribir código correcto, y es redundante si el código ya es correcto –
@ Unicornio de nariz roja: no todos los compiladores verifican '[]' en el modo de depuración. –
@Brian: desafortunadamente, eso es cierto. ¿Y sabes qué? Eso ** apesta **. Pero, afortunadamente, esto puede solucionarse instalando una versión alternativa de la biblioteca estándar, por ejemplo, STLport: http://www.stlport.org/. –