push_back - vector c++ example
c++ uint, unsigned int, int (4)
Hola, tengo un programa que trata mucho con vectores e índices de los elementos de estos vectores, y me preguntaba:
- ¿Hay alguna diferencia entre
uint
yunsigned int
- lo que es mejor usar uno de los tipos anteriores o simplemente usar
int
cuando leo algunas personas dicen que el compilador maneja los valores de int de manera más eficiente, pero si usoint
tendré que buscar siempre los idxs negativos, lo cual es un problema. - ¿Crees que los iteradores sean mejores? ¿Es más eficiente que la indexación normal
vectorx[idx]
?
PD: el software manejará grandes procesos de datos y un buen rendimiento es un requisito indispensable.
C ++ no define tal tipo como
uint
. Este debe ser "su" tipo, es decir, un tipo definido en su código o en alguna biblioteca de terceros. Uno puede adivinar que es lo mismo queunsigned int
. Podría serunsigned long int
aunque o algo más. De todos modos, tienes que comprobarlo tú mismo.Es una cuestión de estilo personal. Yo, por ejemplo, creo que uno tiene que usar tipos sin signo para representar valores naturalmente no negativos, como tamaños o cantidades. No hay diferencia en el rendimiento entre los tipos firmados y no firmados, aparte de algunos contextos específicos. Yo diría que en la mayoría de los casos, los tipos sin firma se manejarán de manera más eficiente.
Los iteradores hacen que las implementaciones sean más genéricas, es decir, puede usar el iterador de acceso secuencial y, por lo tanto, hacer que su implementación sea aplicable a cualquier estructura de datos secuenciales. Al utilizar el índice, se impone el requisito de acceso aleatorio a la estructura de datos, que es un requisito sólido. No es una buena idea imponer requisitos estrictos cuando no hay una necesidad real para ellos.
1) uint = unsigned int, de hecho, uint es solo un typedef para unsigned int (será reemplazado por unsigned int en tiempo de compilación).
2) Si desea agregar a su código alguna "seguridad" junto con uint, evitará ciertos valores negativos.
3) Si ejecuta el vector de forma secuencial, con iteradores, están optimizados para el bucle secuencial (son algún tipo de punteros).
Como han señalado otros pósteres, uint es probablemente un typedef para unsigned
int. Si está utilizando Visual Studio , puede verificarlo rápidamente presionando F12
mientras el cursor del texto está en uint
para ver su definición.
Si estás haciendo un bucle a través del vector secuencialmente, por todos los medios, usa el iterador. Existe una sobrecarga relacionada con la indexación, independientemente del tipo de índice, que se puede evitar mediante la iteración.