Cita:
Iniciado por vangodp 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 original1 2 3
4 5 6
7 8 9
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
1 2 3 1 2 3 1
4 5 6 4 5 6 2 3
7 8 9 7 8 9 4 5 6
1 2 3 4 5 6 7 8 9 10
7 8 9 10 11 12 11 12 13 14 15
13 14 15 16 17 18 16 17 18 19 20 21
Process returned
0 (0x0) execution
time : 0.36
Código C++:
Ver original#include <iostream>
#include<vector>
#include <iomanip>
using namespace std;
void imprimir ( vector < vector < int > > &Vector ){
for ( size_t i = 0; i < Vector.size(); i++ ) {
for ( size_t j = 0; j < Vector[i].size(); j++ )
cout << setw ( 3 ) << Vector[i][j] << ' ';
cout << endl;
}
}
using namespace std;
int main() {
size_t i, j, fil=3, col=3, k = 1;
///vector < vector < int > > Vector ( fil, vector < int > ( col ) );
/// Otra forma de declarar el vector:
vector < vector < int > > Vector;
Vector.resize(fil, vector<int>(col));
for( i = 0; i < fil; i++ )
for( j = 0; j < col; j++, k++)
Vector[i][j] = ( k );
imprimir (Vector);
cout << endl;
for ( i = 0, k=1; i < Vector.size(); i++ )
for ( j = 0; j < 3; j++,k++ )
Vector[i].push_back(k); /// Anyado columnas a las filas
imprimir (Vector);
cout << endl;
Vector.resize(6, vector<int>(6)); /// Anyado filas
for ( i = 3, k=1; i < Vector.size(); i++ )
for ( j = 0; j < Vector[i].size(); j++,k++ )
Vector[i][j]=k;
imprimir (Vector);
cout << endl;
for ( i = 0, k=1; i < Vector.size(); i++ )
for ( j = 0; j <=i; j++,k++ )
Vector[i].push_back(k); /// Anyado mas columnas de longitud variable a las filas
imprimir (Vector);
cout << endl;
return 0;
}
Y como se observa se pueden tener el equivalente a arrays bidimensionales pero no necesariamente cuadrados o rectangulares.
Código C++:
Ver original1 2 3
4 5 6
7 8 9
1 2 3 1
4 5 6 2 3
7 8 9 4 5 6
1 2 3 1
4 5 6 2 3
7 8 9 4 5 6
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
37 38 39 40 41 42
Vector.size()= 10
1 2 3 1 1
4 5 6 2 3 2 3
7 8 9 4 5 6 4 5 6
1 2 3 4 5 6 7 8 9 10
7 8 9 10 11 12 11 12 13 14 15
13 14 15 16 17 18 16 17 18 19 20 21
19 20 21 22 23 24 22 23 24 25 26 27 28
25 26 27 28 29 30 29 30 31 32 33 34 35 36
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
37 38 39 40 41 42 46 47 48 49 50 51 52 53 54 55
,,,
. .
|
\-/ ¡¡¡Saluditos!!!