vacio tamaño saber redimensionar programacion indefinido definir declarar como arreglos arreglo c++ arrays compiler-errors

c++ - saber - Error de compilación de función de miembro de tamaño de matriz



como saber el tamaño de un arreglo en java (3)

Trabajando con este código:

int myArray[10]; for(int i = 0; i < myArray.size(); i++) cout << myArray[i] << endl;

Error del compilador:

error: solicitud de miembro ''tamaño'' en ''myArray'', que es de tipo no de clase ''int [10]'' |

Debo estar perdiendo algo obvio, pero no lo veo.


Desea el operador sizeof :

int myArray[10]; for(int i = 0; i < (sizeof(myArray)/sizeof(myArray[0])); i++) cout << myArray[i] << endl;


El tamaño no está definido para arreglos estáticos en C ++. Si tiene que usar una matriz estática, necesita realizar un seguimiento de la longitud de la matriz en otras variables.

Me gusta:

const int size = 10; int arr[size]; for(int i = 0; i < size; i++){ cout << myArray[i] << endl; }

Por otro lado, si no es un requisito utilizar matrices estáticas, le recomendaría usar std :: vector en su lugar.

std::vector<int> arr; for (int i = 0, max = arr.size(); i<max;i++){ [...] }


Los tipos de matriz no son tipos de clase y no tienen funciones de miembro. Entonces una matriz no tiene una función miembro llamada size . Sin embargo, dado que las matrices tienen tamaños fijos en tiempo de compilación, usted sabe que el tamaño es 10 :

for(int i = 0; i < 10; i++) cout << myArray[i] << endl;

Por supuesto, es mejor evitar los números mágicos y poner el tamaño en una constante definida en alguna parte. Alternativamente, hay una función de biblioteca estándar para determinar la longitud de un objeto de tipo de matriz:

for(int i = 0; i < std::extent(myArray); i++) cout << myArray[i] << endl;

Sin embargo, puede usar std::array lugar, que encapsula un objeto tipo array para usted y proporciona una función miembro de size :

std::array<int, 10> myArray; for(int i = 0; i < myArray.size(); i++) cout << myArray[i] << endl;