unsigned int vs. size_t: cuál es la diferencia y qué es mejor usar en C++?
Hola, colegas. Soy un desarrollador principiante de C++ y no logro entender la diferencia entre `unsigned int` y `size_t`. Parece que ambos son tipos enteros sin signo, pero constantemente veo que en diferentes lugares se usa uno u otro.
Por ejemplo, escribo un programa simple para contar elementos en un vector:
```cpp
#include
#include
int main() {
std::vector numbers = {1, 2, 3, 4, 5};
unsigned int size = numbers.size(); // Se compila, pero ¿advertencia?
for (unsigned int i = 0; i < size; ++i) {
std::cout << numbers[i] << std::endl;
}
return 0;
}
```
El compilador emite una advertencia sobre la discrepancia de tipos en la comparación `i < size`, aunque ambos parecen `unsigned int`. Pero si escribo `size_t size = numbers.size();`, todo está bien.
También he oído que `size_t` puede ser de 64 bits en sistemas de 64 bits, mientras que `unsigned int` solo es de 32 bits. ¿Es esto cierto? Y si es así, ¿no llevará el uso de `unsigned int` a errores al trabajar?