1次元配列にデータを格納し、() operator
をオーバーロードすることによって3Dブール配列を模倣するクラスを作成しました。C++で3d-indexed 1d配列をループする
bool operator()(unsigned x, unsigned y, unsigned z) const { return _data[_zSize*_ySize*x + y*_ySize + z]; }
は(私は(x、y、z)は承知しています私は必要なすべての要素にアクセスすることができます:私はすでに私が見つけると考えるとしばらくは、例えば、コードのこの作品ができたすべてのアプローチを試してみました実際には(z、y、x)ですが、それは私にはありません)、配列を繰り返し処理しようとすると問題が発生します。 深度:3、高さ:4、幅5の3D配列を考え、すべての要素をfalseに初期化します。
11110
01110
01110
01111
:私は次のような結果を得る
for (unsigned i = 0; i < x.sx(); ++i)
for (unsigned j = 0; j < x.sy(); ++j)
for (unsigned k = 0; k < x.sz(); ++k)
x(i, j, k) = !x(i, j, k);
(残りの2つの面が同じように見える)私は( - - height
、sz()
width
sx()
戻りdepth
、sy()
)は、アレイ内のすべての値を反転しようとすると、
明らかに、いくつかの要素がアクセスされ、2回反転されます。配列を索引付けするさまざまな方法を試してみると、パターンが変わります。何が問題ですか?
'y * _ySize'はおそらく' y * _zSize'です。 – Jarod42