C++での2次元の可変長の配列

タイトルの通り、可変長の配列を使いたかった。vectorを使えばいいのは分かる。けどどうしたら良かったか分からなかった。 答えは https://img.atcoder.jp/abc133/editorial.pdf で知った。

D次元中に粒子がN個あるとし、 i(i=0,...,N)番目の粒子の dim(dim=0,...,D)次元目の座標を a[i][dim]という変数に代入したい。

標準入力から、NとDが与えられて、その後、標準入力から各座標の値が与えられる時、以下のようにすると、a[i][dim]にその値が入力できる。

#include <vector>

int main (){

cin >> N >> D;
vector<vector<int> > a(N, vector<int>(D))
for (int i=0; i<N; ++i){
    for (int dim=0; dim<D; ++dim){
        cin >> a[i][dim];
    }
}

return 0;
}