Trabajo con una gran cantidad de código de cálculo escrito en C ++ pensando en un alto rendimiento y una baja sobrecarga de memoria. Utiliza contenedores STL (principalmentevector ) mucho, e itera sobre esos contenedores casi en cada función.
El código iterativo se ve así:
for (int i = 0; i < things.size(); ++i)
{
// ...
}
pero produce la falta de coincidencia firmada / no firmada advertencia de (C4018 en Visual Studio).
Reemplazarlo intcon algún unsignedtipo es un problema porque con frecuencia usamos pragmas OpenMP y requiere que el contador sea int.
Estoy a punto de suprimir las (cientos de) advertencias, pero me temo que me he perdido alguna solución elegante al problema.
En iteradores . Creo que los iteradores son geniales cuando se aplican en lugares apropiados. El código con el que estoy trabajando nunca cambiará los contenedores de acceso aleatorio en listo algo así (por lo que la iteración int iya es independiente del contenedor), y siempre necesitará el índice actual. Y todo el código adicional que necesita escribir (el iterador en sí y el índice) simplemente complica las cosas y ofusca la simplicidad del código subyacente.
int.