Quel codice comunque è corretto; size() fa parte dell'interfaccia del vector (e non solo) quindi ci deve essere. Che compilatore usi? Hai prefissato std::davanti le dichiarazioni?
L'errore potrebbe essere prima.
In ogni caso puoi prendere spunto da qui per scrivere la tua matrice.
http://www.emagsoftware.it/faqcpp.htm#9
se scorri la pagina, poco sotto ci sono esempi col vector e fanno più o meno quello che fai tu.
Secondo me è necessaria una distinzione.è vero che tutti i vector nella matrice devono avere lo stesso numero di righe?
Non so per definizione o altro, ma in genere per matrice si intende un rettangolo X * Y di elementi. Quindi la risposta alla domanda è: si.
Però, nulla vieta di avere un vettore di vettori le cui righe sono variabili (come quello che vorresti, se non ho capito male) e il modo per scorrerlo (non sapendo a priori la lunghezza delle singole righe) è quello che hai postato (che a me funziona, da li la domanda del compilatore).