vectors push_back index example cplusplus c++ indexing int iterator unsigned

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:

  1. ¿Hay alguna diferencia entre uint y unsigned int
  2. 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 uso int tendré que buscar siempre los idxs negativos, lo cual es un problema.
  3. ¿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.


  1. 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 que unsigned int . Podría ser unsigned long int aunque o algo más. De todos modos, tienes que comprobarlo tú mismo.

  2. 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.

  3. 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.