私は行列(int ** G)を持っていますが、この行列の行(または列)をどのように指していますか? Javaでは、これは簡単な方法です:行列の行または列をポイントする方法は?
Gi double [] = G [i];
そしてC++? Cでは
私は行列(int ** G)を持っていますが、この行列の行(または列)をどのように指していますか? Javaでは、これは簡単な方法です:行列の行または列をポイントする方法は?
Gi double [] = G [i];
そしてC++? Cでは
++、それは同じように簡単です:Cで
vector<vector<double> > matrix;
vector<double> &row = matrix[i];
Cの方法は、C++と同様に動作しますが、あなたはいつでも、プレーンポインタにコンテナを好むべきであると
double *row = Matrix[i];
注意されることをあなたはできる。
これらの2つのバージョンはまったく異なるものに注意する必要があります。 –
@CrazyEddieこれは、別のプログラミング言語への参照から完全にはっきりしているはずです(C vs. C++)。 – dasblinkenlight
それを越えて行く。 C++バージョンでは、行のコピーが作成されます。 Cのバージョンはそれを指しています。これは非常に重要な違いで、異なる言語であることとは関係ありません。 –
@ dasblinkenlightのように、行を取得するのは簡単です。ただし、列を取得するには、はるかに関与しています。あなたはそれで行われたときに
int *copyColumn(int **matrix, int column, int rows)
{
int *data = new int[rows];
for (int i = 0; i < rows; i++)
data[i] = matrix[i][column];
return data;
}
ちょうどdelete
データに覚えている:あなたは行列の行数を知っていると仮定すると、あなたは、次の操作を行うことができます!
これは有効なJavaコードではありません... –
'G [i] [j]'を試しましたか? – ja72