要素数を決定してから追加する解説は見かけたが、とりあえず入れ物だけ用意して後から中身を追加したいというケースがなかったのでメモ
vector<vector<int>> a;//「ベクタを要素に持てる」ベクタ(中身は空)
a.push_back(vector<int>());//空のベクタを1つ追加(a[0]に相当します)
a[0].push_back(1);//a[0][0]=1に相当する要素を追加
a[0].push_back(2);//a[0][1]=2に相当する要素を追加
a[0].push_back(3);//a[0][2]=3に相当する要素を追加
a.push_back(vector<int>());//空のベクタを1つ追加(a[1]に相当します)
a[1].push_back(4);//a[1][0]=4に相当する要素を追加
a[1].push_back(5);//a[1][1]=5に相当する要素を追加
空のベクタのpush_backをするのが肝のようです。