Il secondo argomento su that constructor è il valore da inizializzare con. In questo momento stai ottenendo 4 vettori costruiti in modo predefinito. Per chiarire con un esempio 1D semplice:
// 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);
Così si vuole:
vector< vector<int> > bar(4, vector<int>(4));
// this many^ of these^
Questo crea un vettore di vettori di interi, inizializzato per contenere 4 vettori che vengono inizializzati per contenere 4 int, inizializzati a 0. (È possibile specificare un valore predefinito per l'int, se lo si desidera.)
A bocca piena, ma non troppo difficile. :)
Per una coppia:
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^
L'ottimizzatore prematura in me urla alla vista di questa ultima riga di codice ... – sbk
cosa succede se invece di int, ho voluto fare un altro paio. C'è un modo per inizializzare tutte le coppie per contenere 0,0? –
zebraman
@zebra: le coppie inizializzeranno gli interi a 0 stessi. Ma per completezza ho modificato il mio post. – GManNickG