Cómo usar correctamente arrays en C++: desde estáticos hasta dinámicos y std::array
¡Hola a todos! Acabo de empezar a aprender C++ después de Python, y tengo un lío total con los arrays. En Python simplemente escribía `arr = [1, 2, 3]` y todo funcionaba. Pero aquí...
Estoy intentando hacer un programa simple que almacene 5 números y muestre su suma. Escribí esto:
```cpp
int arr[5];
arr = {1, 2, 3, 4, 5};
```
Pero el compilador se queja: "array type 'int[5]' is not assignable". Bueno, probé a inicializar directamente:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
```
Esto funcionó. Pero luego necesité pasar este array a una función. Escribí:
```cpp
void printSum(int arr[]) {
int sum = 0;
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
sum += arr[i];
}
cout << sum;
}
```
Y aquí algo extraño — `sizeof(arr)` devuelve 8 (¿tamaño de un puntero?), no 20 (5 * 4 bytes). ¿Por qué pasa esto?
Además, leí sobre `std::vector` y `std::array`, pero no entiendo cuándo usar cada uno. También vi que la gente escribe `int* arr = new int[5]` — eso es como magia.
Explíquenme, por favor.