vectores una programacion matriz matrices llenar ingresar ejemplos dinamico datos como clase c++ boost vector repeat assign

c++ - una - Inicializando un vector de vectores que tiene un tamaño fijo con asignación de impulso



vectores en c++ pdf (4)

Tener un vector de vector con un tamaño fijo,

vector<vector<int> > v(10);

Me gustaría inicializarlo para que tenga en todos los elementos un vector unidimensional con valor inicializado (por ejemplo 1).

He usado Boost Assign de la siguiente manera

v= repeat(10,list_of(list_of(1)));

y tengo un error de compilación

error: no matching function for call to ‘repeat(boost::assign_detail::generic_list<int>)’

¿Podría decirme cómo hacer eso? Gracias por adelantado


Esto no usa boost::assign pero hace lo que necesita:

vector<vector<int> > v(10, vector<int>(10,1));

Esto crea un vector que contiene 10 vectores de int , cada uno contiene 10 ints .


No necesita usar boost para el comportamiento requerido. A continuación, se crea un vector de 10 vector<int> s, con cada vector<int> contiene 10 int s con un valor de 1 :

std::vector<std::vector<int> > v(10, std::vector<int>(10, 1));


Voy a tratar de explicarlo a los nuevos en C ++. Un vector de mat de verificadores tiene la ventaja de que puede acceder a sus elementos directamente casi sin costo utilizando el operador [] .

int n(5), m(8); vector<vector<int> > mat(n, vector<int>(m)); mat[0][0] =4; //direct assignment OR for (int i=0;i<n;++i) for(int j=0;j<m;++j){ mat[i][j] = rand() % 10; }

Por supuesto, esta no es la única manera. Y si no agrega o elimina elementos, también puede usar los contenedores nativos mat[] que no son más que punteros. Aquí está mi manera favorita, usando C ++:

int n(5), m(8); int *matrix[n]; for(int i=0;i<n;++i){ matrix[i] = new int[m]; //allocating m elements of memory for(int j=0;j<m;++j) matrix[i][j]= rand()%10; }

De esta forma, no tiene que usar #include <vector> . ¡Con suerte, está más claro!


#include <vector> #include <iostream> using namespace std; int main(){ int n; cin >> n; vector<vector<int>> v(n); //populate for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ int number; cin >> number; v[i].push_back(number); } } // display for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ cout << v[i][j] << " "; } cout << endl; } }

Entrada:

4 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44

Salida:

11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44