【C++】vector二重配列の容量確保の仕方

二重配列のVectorの容量の確保の仕方

宣言の時にVevtor配列を初期化すると同時に確保するのはいいんですけど,それをコードの途中で,しかも二重配列ってどうすんだ?と思って軽く調べてので記録します.

結論

要するに,for文でresizeメソッドで確保すればいいらしい.(なんかダサい)

#include <iostream>
#include <vector>

int main()
{
    //ここから
    std::vector<std::vector<int> > v;
    v.resize(10); 
    for(int i = 0; i<10; i++){
        v[i].resize(10);
    }
    //ここまで

    //出力して確認
    for(int i = 0; i<10; i++){
        for(int j = 0; j<10; j++){
            v[i][j] = 10*i + j;
            std::cout << v[i][j] <<std::endl;
        }
    }
}

なお,補足として,上のresizeメソッドにreserveメソッドを入れても動きます. しかし,自分の認識ではreserveはあくまで容量の確保しかしないので,エラーになると思っていたのですが...

この原因はまた今度調べたいと思います.

参考

negi-magnet.hatenablog.com