
En C++, averiguar el número de elementos en un array es una tarea común. Te guiaré paso a paso para lograrlo.
Tamaño del array en la declaración
Cuando declaras un array y especificas el tamaño, ya conoces el número de elementos. Por ejemplo, si escribes int numeros[10];, sabes que tienes un array llamado numeros con 10 elementos. En este caso, el tamaño está explícitamente definido.
Uso de sizeof
El operador sizeof es muy útil. Primero, obtienes el tamaño total del array en bytes. Luego, obtienes el tamaño de un solo elemento del array en bytes. Finalmente, divides el tamaño total del array entre el tamaño de un elemento para obtener el número de elementos.
Must Read
Considera este ejemplo: int mi_array[] = {1, 2, 3, 4, 5};. El código para encontrar el número de elementos sería: sizeof(mi_array) / sizeof(mi_array[0]). sizeof(mi_array) devuelve el tamaño total del array. sizeof(mi_array[0]) devuelve el tamaño del primer elemento (un int en este caso). La división te da el número de elementos.
Ejemplo de código completo
Aquí tienes un ejemplo completo en C++:

#include <iostream>
int main() {
int mi_array[] = {10, 20, 30, 40, 50, 60, 70};
size_t numero_elementos = sizeof(mi_array) / sizeof(mi_array[0]);
std::cout << "El numero de elementos en el array es: " << numero_elementos << std::endl;
return 0;
}
Este código primero incluye la librería iostream. Luego, declara un array llamado mi_array. Después, calcula el número de elementos usando sizeof. Finalmente, imprime el resultado en la consola.
¿Por qué usar size_t?
size_t es un tipo de dato diseñado para representar tamaños. Es un tipo entero sin signo garantizado para ser lo suficientemente grande para contener el tamaño de cualquier objeto. Usar size_t es la práctica recomendada para almacenar el resultado de sizeof.

Arrays pasados a funciones
Cuando pasas un array a una función, este se convierte en un puntero. En ese caso, sizeof no funciona como se espera. Dentro de la función, sizeof devolverá el tamaño del puntero, no el tamaño del array original. Para evitar esto, necesitas pasar el tamaño del array como un parámetro adicional.
Ejemplo:

#include <iostream>
void imprimir_array(int arr[], size_t tamanio) {
for (size_t i = 0; i < tamanio; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int mi_array[] = {1, 2, 3, 4, 5};
size_t numero_elementos = sizeof(mi_array) / sizeof(mi_array[0]);
imprimir_array(mi_array, numero_elementos);
return 0;
}
En este ejemplo, la función imprimir_array recibe el array y su tamaño. Dentro de la función, usamos el tamaño pasado para iterar sobre el array correctamente.
Alternativas modernas: std::array y std::vector
En C++ moderno, es preferible usar std::array o std::vector en lugar de los arrays nativos. std::array tiene un tamaño fijo conocido en tiempo de compilación. std::vector es un array dinámico que puede crecer o reducirse en tiempo de ejecución. Ambos proporcionan una función size() que devuelve el número de elementos.

Ejemplo con std::array:
#include <iostream>
#include <array>
int main() {
std::array<int, 5> mi_array = {1, 2, 3, 4, 5};
size_t numero_elementos = mi_array.size();
std::cout << "El numero de elementos en el array es: " << numero_elementos << std::endl;
return 0;
}
Ejemplo con std::vector:
#include <iostream>
#include <vector>
int main() {
std::vector<int> mi_vector = {1, 2, 3, 4, 5};
size_t numero_elementos = mi_vector.size();
std::cout << "El numero de elementos en el vector es: " << numero_elementos << std::endl;
return 0;
}
Estos ejemplos muestran cómo usar la función size() para obtener el número de elementos en un std::array y un std::vector, respectivamente. El uso de estas estructuras de datos modernas facilita la gestión de arrays y evita algunos de los problemas asociados con los arrays nativos.