El segundo argumento para that constructor es el valor para inicializar. En este momento estás obteniendo 4 vectores construidos por defecto. Para aclarar con un ejemplo 1D más simple:
// 4 ints initialized to 0
vector<int> v1(4);
// *exactly* the same as above, this is what the compiler ends up generating
vector<int> v2(4, 0);
// 4 ints initialized to 10
vector<int> v3(4, 10);
Así que usted quiere:
vector< vector<int> > bar(4, vector<int>(4));
// this many^ of these^
Esto crea un vector de vectores de enteros, inicializado para contener 4 vectores que se inicializan para contener 4 intercepciones, inicializados a 0. (Puede especificar un valor predeterminado para int, si lo desea).
A boca llena, pero no demasiado. :)
Para un par:
typedef std::pair<int, int> pair_type; // be liberal in your use of typedef
typedef std::vector<pair_type> inner_vec;
typedef std::vector<inner_vec> outer_vec;
outer_vec v(5, inner_vec(5, pair_type(1, 1)); // 5x5 of pairs equal to (1, 1)
// this many^of these^
//this many^ of these^
El optimizador prematura en mí grita a la vista de esta última línea de código ... – sbk
¿Qué pasa si en lugar de int, lo que quería hacer otro par. ¿Hay alguna forma de inicializar todos los pares para que contengan 0,0? –
zebraman
@zebra: Pares inicializarán las entradas a 0 ellos mismos. Pero para completar, edité mi publicación. – GManNickG