Ver Mensaje Individual
  #13 (permalink)  
Antiguo 03/07/2014, 02:03
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: Consulta: se puede hacer esto en c++

Cita:
Iniciado por vangodp Ver Mensaje
Hasta a mi me servio eso
.................................................. ........
¡Pero Ojo! El problema de eso es que va a perder lo que mejor le va a los vectores que es la ventaja de poder agrandarlos a gusto.
Por que de esta forma el vector va tener que tener un tamaño fijo o para agrandar todas esas casas va haber una tremenda movida de datos de aca para alla.
asi que si lo creas un vector de tamaño fijo su forma no esta mal, pero si tienes que alterar el tamaño puede ser algo pesado.
Eso de que tiene un tamaño fijo siendo un "vector" es un decir.

Por ejemplo, y a lo simple, puedes añadir columnas y/o filas:

Código C++:
Ver original
  1. 1   2   3
  2.   4   5   6
  3.   7   8   9
  4.  
  5.  
  6.   1   2   3   1   2   3
  7.   4   5   6   4   5   6
  8.   7   8   9   7   8   9
  9.  
  10.   1   2   3   1   2   3
  11.   4   5   6   4   5   6
  12.   7   8   9   7   8   9
  13.   1   2   3   4   5   6
  14.   7   8   9  10  11  12
  15.  13  14  15  16  17  18
  16.  
  17.  
  18.   1   2   3   1   2   3   1
  19.   4   5   6   4   5   6   2   3
  20.   7   8   9   7   8   9   4   5   6
  21.   1   2   3   4   5   6   7   8   9  10
  22.   7   8   9  10  11  12  11  12  13  14  15
  23.  13  14  15  16  17  18  16  17  18  19  20  21
  24.  
  25. Process returned 0 (0x0)   execution time : 0.36

Código C++:
Ver original
  1. #include <iostream>
  2. #include<vector>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. void imprimir ( vector < vector < int > > &Vector ){
  8.   for ( size_t i = 0; i < Vector.size(); i++ ) {
  9.     for ( size_t j = 0; j < Vector[i].size(); j++ )
  10.       cout << setw ( 3 ) << Vector[i][j] << ' ';
  11.     cout << endl;
  12.     }
  13. }
  14.  
  15. using namespace std;
  16.  
  17.  int main() {
  18.   size_t i, j, fil=3, col=3, k = 1;
  19.   ///vector < vector < int > > Vector ( fil, vector < int > ( col ) );
  20.   /// Otra forma de declarar el vector:
  21.   vector < vector < int > > Vector;
  22.   Vector.resize(fil, vector<int>(col));
  23.   for( i = 0; i < fil; i++ )
  24.     for(  j = 0; j < col; j++, k++)
  25.       Vector[i][j] = ( k );
  26.   imprimir (Vector);
  27.   cout << endl;
  28.  
  29. for ( i = 0, k=1; i < Vector.size(); i++ )
  30.     for ( j = 0; j < 3; j++,k++ )
  31.       Vector[i].push_back(k); /// Anyado columnas  a las filas
  32.   imprimir (Vector);
  33.   cout << endl;
  34.  
  35.  
  36.   Vector.resize(6, vector<int>(6)); /// Anyado filas
  37.   for ( i = 3, k=1; i < Vector.size(); i++ )
  38.     for ( j = 0; j < Vector[i].size(); j++,k++ )
  39.       Vector[i][j]=k;
  40.  
  41.   imprimir (Vector);
  42.   cout << endl;
  43.  
  44.   for ( i = 0, k=1; i < Vector.size(); i++ )
  45.     for ( j = 0; j <=i; j++,k++ )
  46.       Vector[i].push_back(k); /// Anyado mas columnas de longitud variable a las filas
  47.   imprimir (Vector);
  48.   cout << endl;
  49.   return 0;
  50. }

Y como se observa se pueden tener el equivalente a arrays bidimensionales pero no necesariamente cuadrados o rectangulares.

Código C++:
Ver original
  1. 1   2   3
  2.   4   5   6
  3.   7   8   9
  4.  
  5.   1   2   3   1
  6.   4   5   6   2   3
  7.   7   8   9   4   5   6
  8.  
  9.   1   2   3   1
  10.   4   5   6   2   3
  11.   7   8   9   4   5   6
  12.   1   2   3   4   5   6
  13.   7   8   9  10  11  12
  14.  13  14  15  16  17  18
  15.  19  20  21  22  23  24
  16.  25  26  27  28  29  30
  17.  31  32  33  34  35  36
  18.  37  38  39  40  41  42
  19.  
  20. Vector.size()= 10
  21.  
  22.   1   2   3   1   1
  23.   4   5   6   2   3   2   3
  24.   7   8   9   4   5   6   4   5   6
  25.   1   2   3   4   5   6   7   8   9  10
  26.   7   8   9  10  11  12  11  12  13  14  15
  27.  13  14  15  16  17  18  16  17  18  19  20  21
  28.  19  20  21  22  23  24  22  23  24  25  26  27  28
  29.  25  26  27  28  29  30  29  30  31  32  33  34  35  36
  30.  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45
  31.  37  38  39  40  41  42  46  47  48  49  50  51  52  53  54  55

,,,
. .
|
\-/


¡¡¡Saluditos!!!


Última edición por leosansan; 03/07/2014 a las 05:52