電子書籍の厳選無料作品が豊富!

「vector< vector<double>>からdouble*への変換につきまして」
C++の行列計算のライブラリとして以下の関数を使うことになったのですが、
//matA*vecB=vecX
void CalcMatrix(int rows, double* matA, double* vecB, double* vecX);
この引数として
vector< vector<double>>
で定義した変数を渡す方法はありますでしょうか?
もし御座いましたらご教授御願い致します。

A 回答 (2件)

じゃあ無理. 「1つの vector の中」なら要素のアドレスが連続することを保証しているが, 「複数の vector の中で要素

がひとつながりになる」ことはだれも保証しない.
    • good
    • 0
この回答へのお礼

vectorがそれぞれのvectorを格納しているのではなく、
vector<vector<double>>という中に二次元配列があると勘違いしておりました。
ご回答ありがとうございました。

お礼日時:2010/05/13 13:11

一見では不可能だと思います.


もちろん, なぜかあなたが書いてくれない CalcMatrix の仕様によってはできるのかもしれませんが.... しかし, まともな関数名をつけようとは思わなかったのかねぇ.

この回答への補足

本来の引数としては
double* matA = new double(rows*cols)//rows:行の数, cols:列の数
で用意したものを先ほどの関数に入れるよう指定されているのですが、
vector<vector<double> > matA;
matA.assign(rows, vector<double>(cols));
で代用できないかと考え質問させていただきました。

質問させていただく身でありながら、情報が不足してしまい申し訳ありません。

補足日時:2010/05/13 11:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!