私は2つのクラスmy_matrix
とmy_vector
を持っています。クラスmy_vector
はmy_matrix
から継承されています。またmy_matrix
クラスは2d std::vector<std::vector<double>>
で作られています。私はmy_vector
をcolumn vector/column matrix
にしたいと思っています。基本的にはnx1
です。初期化中にstd :: initializer_listを列行列または列ベクトルに変換するにはどうすればよいですか?
私はstd::initializer_list
で行列を初期化しようとすると、それは罰金
class my_matrix{
public:
my_matrix(std::initializer_list<std::vector<double>> list: row(list.size(),
col((*list.begin()).size()), matrix(list){}
private:
std::vector<std::vector<double> matrix; // I am planning to use single contiguous memory in future
};
に動作します。これは、私が今、私はベクトル(数学)を作成するために行列を使用し、マトリックス my_matrix mat = {{1,2,3},{4,5,6}};
を初期化する価値することができます
class my_vector: public Matrix{
my_vector(std::initializer_list<double> list):Matrix({list}){}
// my_vector(std::initializer_list<double> list)
//:Matrix({some how I could do {{list[0]}, {list[1]}, {list[2]}, ..}}){}
};
だから私がしようとするとmy_vector vec = {1,2,3};
それは1xn
行列を作成しますが、私が望んでいたのはnx1
でした。
std::initializer_list
を使用してnx1
の列マトリックスを作成するにはどうすればよいですか?これを達成しようとするべき他の選択肢はありますか?
あなたはmy_matrix' 'に保護されたコンストラクタを追加し、リストとダミーパラメータを取るかもしれませんコンストラクタで正しく設定してください。 – NathanOliver
@NathanOliverああ!ええ、それは素晴らしい提案です。私はそれを試みます。 – pokche
@ NathanOliverあなたが提案した通りに結果を得ました。あなたの提案に近いと思いますか? – pokche