3

Quisiera saber si es posible inicializar un array asignando valores. ¿La única manera es iterando con un for?

Algo que es muy fácil en Javascript es declarar una variable asignando valores, y además tiene la ventaja de que no es necesario indicar la longitud del array, en comparación con C++.

var array=[1,2,3,4,5]

Si yo hago pongo el 5 dentro de los corchetes en C++, no tengo ningún problema, compila y todo:

int array_enteros[5]={1,2,3,4,5};

Pero cuando yo hago lo siguiente:

int 5;
int array_enteros[digitos]={1,2,3,4,5};

El CodeBlocks me tira error:

Warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]

error: assigning to an array from an initializer list

error: variable-sized object 'array_enteros' may not be initialized

Lo que quisiera hacer es declarar un array pero indicando la longitud mediante una variable, o de ser posible, sería mucho mejor no necesitar el uso de la variable, y que cambie la longitud automáticamente dependiendo de la cantidad de valores que yo le asigne.

  • @Trauma No, fue un error al redactar la pregunta... Fueron varios en realidad, como el de poner 5 cuando son 6 del 0 al 5. –  May 28 '17 at 21:36
  • 1
    Ok. No me fijé tanto. – Trauma May 28 '17 at 22:01
  • 1
    Tema [relacionado](https://es.stackoverflow.com/questions/13960/existe-alguna-forma-para-que-en-un-array-todas-las-variables-tengan-el-mismo/13999#13999). – PaperBirdMaster May 29 '17 at 07:43

2 Answers2

3

Si lo que quieres es que el array tenga la longitud igual al número de valores que tiene el array, sin tener que declarárselo puedes dejar los corchetes [] vacíos y C++ asumirá automáticamente el tamaño del array con los valores que tú le has indicado.

Ejemplo:

int array_enteros[]={0,1,2,3,4,5};

Desde la documentación:

When an initialization of values is provided for an array, C++ allows the possibility of leaving the square brackets empty []. In this case, the compiler will assume automatically a size for the array that matches the number of values included between the braces {}:

int foo [] = { 16, 2, 77, 40, 12071 };

En español sería:

Cuando se proporciona la inicialización de valores al array, C++ permite dejar los corchetes vacíos []. En ese caso, el compilador asume automáticamente el tamaño del array, que coincide con la cantidad de valores incluidos entre llaves {}.

Francisco Romero
  • 16,194
  • 5
  • 30
  • 61
0

Como cuando creás un for necesitás declarar la variable primero e inicializarla:

for(int i=0;i<=5;i++)

Podés declarar una variable:

int mi_variable=5

... y el array:

int mi_array[mi_variable]

El array toma el valor de mi_variable que es 5.

  • Sí, ahora entiendo, hasta ahí está todo bien, el problema es cuando yo quería asignar los 5 valores... Pero igual ya me respondieron correctamente. –  May 28 '17 at 21:51
  • 1
    Los VLA **no están permitidos** en C++ estándar. `int mi_array[mi_variable]` **no** es correcto. Si te funciona, es por una extensión de tu compilador, pero es *ilegal*. – Trauma May 28 '17 at 21:53
  • ok que bueno que ya te respondieron, suerte.. – Cristopher Reyees May 28 '17 at 21:58