多次元配列をvectorで実装しようとすると宣言が冗長になってしまうので、テンプレートを用いてそれを解決するクラスを試作してみました。
目的のものは完成したのですが、現状では初期化時に一次元目?の要素数しか決定することができません。
multi_vector(const T&& value, size_t 要素数, size_t 要素数....)というコントラスタを作成して初期化時に全ての要素数を決定したいのですが、実装方法が思いつきません。
どうすれば実装できるのでしょうか?
Cpp
1#include <iostream> 2#include <vector> 3 4template <class T, size_t Dim = 1> 5struct multi_vector; 6 7template <class T, size_t Dim> 8struct multi_vector : multi_vector<std::vector<T>, Dim - 1> { 9 using multi_vector<std::vector<T>, Dim - 1>::multi_vector; 10}; 11 12template <class T> 13struct multi_vector<T, 1> : std::vector<T> { 14 using std::vector<T>::vector; 15}; 16 17int main() 18{ 19 multi_vector<int, 3> a(3); 20 for (int i = 0; i < a.size(); i++) { 21 a[i].resize(5); 22 for (int j = 0; j < a[i].size(); j++) 23 a[i][j].resize(7, 0); 24 } 25 // a[3][5][7]の領域を確保して 0 で初期化 26 27 return 0; 28}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/22 04:26