次のことを達成するにはどうすればよいですか。
std::vector<int> vec = { 1, 2, 3 };
const int N = vec.size();
// Now create NxN 2D array.
まず、できることはわかっていnew
ますが、後で削除することを忘れないでください。可能であれば、メモリの割り当て解除を処理する必要はありません。
第 2 に、スタック上で 2D 配列を宣言できません。これは、N が定数式ではない (この場合はできない) ためです。(いずれにせよ、私は VS2013 を使用しており、サポートしていませんconstexpr
。)
std::array
第三に、明らかに「ローカル変数は非型引数として使用できない」ため、使用できません(または使用方法がわからない可能性があります)。(VS2013 コンパイル ダイアログからこれをコピーして貼り付けましたが、この点についてはほとんど理解していません)。
第四に、私は を使用することを考えてunique_ptr
います。unique_ptr
問題は、のような 1D 配列の使用方法は知ってstd::unique_ptr<int> arr{ new int[N] }
いますが、2D 配列の使用方法がわかりません。
最後に、常にヒープ上に作成される C スタイルの配列の周りに独自のシン ラッパーを記述したり、独自の 2D 配列クラスを記述したりできることを知っています。しかし、C++ (C++11) でこれを行うネイティブまたは標準ライブラリの方法はありますか?