私の本は単一のベクトルを使う方が速いと言うので、しばしばすべての行列を1つのベクトルに覚えています。行列へのアクセスは時間がかかります。 私はこの1つのようなコードがある場合:メモリの連続した位置にある行列
int main(int argc, char **argv)
{
int mat[10][10],i;
for(i=0;i<10;i++)
mat[i][0]=99;
int *ptr=&mat[0][0];
for(i=0;i<10;i++)
{
printf("%d\n",*ptr);
ptr+=10;
}
return 0;
}
は、私は4/5回それを実行しようとしたが、すべての時間が10倍99だから、また、マトリックスは、メモリのcontigous位置に記憶されている 出力しますか?常に? 「はい」の場合は、ベクターへのアクセスが速いのはなぜですか?
「マトリックス」と「ベクター」の意味を明確にすることはできますか?できるだけ早く回答しましたが、私はあなたのサンプルプログラムに基づいて何を意味するかを推測しています。 –
2Dアレイおよび1Dアレイ。 –