Autor
|
Tema: Vector de vectores C++ (Leído 11,230 veces)
|
anonimo12121
|
Buenas debido a necesidad he tenido que aprender a usar esto y quisiera que me dijeraís si esta bien o no. El objetivo es hacer un vector bidimesional Ejemplo, v[ x ][ x ] en el caso siguiente seria al final 10*10 vector< vector<int> > Vector2; vector<int> v1t; for(int y=0;y<10;y++){ for(int x=0;x<10;x++){ v1t.push_back(y); } Vector2.push_back(v1t); v1t.clear; }
Está bien echo así?
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Creo que el ejemplo te valdrá y aclarará un poco:#include <iostream> #include<vector> #include <iomanip> using namespace std; int main() { vector< vector<int> > Vector2 ( 10, vector<int> (10) ); for(int y=0;y<10;y++){ for(int x=0;x<10;x++){ Vector2[y][x]=(x+y); } } for ( int i = 0; i < 10; i++ ) { for ( int j = 0; j < 10; j++ ) cout<< setw ( 3 ) << Vector2[i][j] <<' '; cout<<'\n'; } return 0; }
Saluditos!.
|
|
|
En línea
|
|
|
|
anonimo12121
|
Yo esque cuando declaro el vector aún no se el tamaño, porque es dinamico y no se como hacerlo cuando se el tamaño exacto, por eso lo he echo como en el ejemplo.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Yo esque cuando declaro el vector aún no se el tamaño, porque es dinamico y no se como hacerlo cuando se el tamaño exacto, por eso lo he echo como en el ejemplo.
Supongo que aunque dinámico en algún momento tendrás que introducir las dimensiones del mismo, en el ejemplo que propones están dimensionados a priori a 10. En otro caso:#include <iostream> #include<vector> #include <iomanip> using namespace std; int main() { int m,n; cout<<"introduzca el numero de filas"<<endl; cin>>m; cout<<"introduzca el numero de columnas"<<endl; cin>>n; vector< vector<int> > Vector2 ( m, vector<int> (n) ); for(int y=0;y<m;y++){ for(int x=0;x<n;x++){ Vector2[y][x]=(x+y); } } for ( int i = 0; i < m; i++ ) { for ( int j = 0; j < n; j++ ) cout<< setw ( 3 ) << Vector2[i][j] <<' '; cout<<'\n'; } return 0; }
Saluditos!.
|
|
« Última modificación: 23 Febrero 2013, 21:04 pm por leosansan »
|
En línea
|
|
|
|
anonimo12121
|
no se mira. lass SceneMap : public Scene { public: SceneMap(string name,int z=0); ~SceneMap(); void Update(); private: vector<vector <int> > i_Map;//tamaño del mapa ...
SceneMap::SceneMap(string name,int z){ setZ(z); ifstream file(name.c_str()); file >> s_NameTiles; file >> i_SizeTile; file >> i_SizeMapW; file >> i_SizeMapH; Image_TileOrig.loadFromFile(s_NameTiles); i_SizeTileW = Image_TileOrig.getSize().x/i_SizeTile; i_SizeTileH = Image_TileOrig.getSize().y/i_SizeTile; Image_TileDest.create(i_SizeMapW*i_SizeTile,i_SizeMapH*i_SizeTile,sf::Color::Red); vector<int> vt; for(int i=0;i<i_SizeMapH;i++){ for(int j=0;j<i_SizeMapW;j++){ vt.push_back(0); file >> vt[j]; Image_TileDest.copy(Image_TileOrig,j*i_SizeTile,i*i_SizeTile,sf::IntRect(( ((vt[j]%i_SizeTileW)-1) * i_SizeTile),(( (vt[j]/i_SizeTileW)) * i_SizeTile),i_SizeTile,i_SizeTile)); } i_Map.push_back(vt); vt.clear(); }
Perdona si no me entero mucho hoy Leo...
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
no se mira. lass SceneMap : public Scene { public: SceneMap(string name,int z=0); ~SceneMap(); void Update(); private: vector<vector <int> > i_Map;//tamaño del mapa ...
SceneMap::SceneMap(string name,int z){ setZ(z); ifstream file(name.c_str()); file >> s_NameTiles; file >> i_SizeTile; file >> i_SizeMapW; file >> i_SizeMapH; Image_TileOrig.loadFromFile(s_NameTiles); i_SizeTileW = Image_TileOrig.getSize().x/i_SizeTile; i_SizeTileH = Image_TileOrig.getSize().y/i_SizeTile; Image_TileDest.create(i_SizeMapW*i_SizeTile,i_SizeMapH*i_SizeTile,sf::Color::Red); // vector<int> vt; <====="esto no seria sino": vector< vector<int> > vt ( i_SizeMapH, vector<int> (i_SizeMapW) ); for(int i=0;i<i_SizeMapH;i++){ for(int j=0;j<i_SizeMapW;j++){ vt.push_back(0); file >> vt[j]; Image_TileDest.copy(Image_TileOrig,j*i_SizeTile,i*i_SizeTile,sf::IntRect(( ((vt[j]%i_SizeTileW)-1) * i_SizeTile),(( (vt[j]/i_SizeTileW)) * i_SizeTile),i_SizeTile,i_SizeTile)); } i_Map.push_back(vt); vt.clear(); }
.................... Espero que veas en el código mi propuesta y te sirva.
..............No obstante veo una incongruencia ya que vt se declara como bidimensional pero en líneas posteriores parece actuar como unidimensional ¿¿¿???. No, no tiene sentido.
Te lo dejo por si te sirve de algo. Saluditos!.
|
|
« Última modificación: 23 Febrero 2013, 22:19 pm por leosansan »
|
En línea
|
|
|
|
anonimo12121
|
vale lo ví!
gracia modificaré el code
Saludos!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
vectores
Programación C/C++
|
tartagal
|
1
|
3,123
|
7 Diciembre 2010, 17:16 pm
por Littlehorse
|
|
|
Stock Vector - Fuego[Diseño][Vectores][BS-FSE-FS-DL]
Diseño Gráfico
|
EmirSc
|
2
|
8,294
|
24 Enero 2011, 04:05 am
por EmirSc
|
|
|
STL: Uso de vector para administrar vectores 3D (para juegos)
Programación C/C++
|
david_BS
|
3
|
3,299
|
12 Mayo 2012, 19:13 pm
por david_BS
|
|
|
Dividir un Vector<objetoQueQuieras> en un array de vectores de n componentes
Java
|
rixi15
|
2
|
8,406
|
2 Noviembre 2012, 13:26 pm
por rixi15
|
|
|
C++ OOP vectores de clases - como crear un vector de una clase
« 1 2 3 »
Programación C/C++
|
GisiNA
|
22
|
16,263
|
21 Febrero 2017, 17:12 pm
por GisiNA
|
|