各要素に触れるとコストがかかり、境界要素のみに触れたいと想像してください。
明らかに、これは一般的な最適化ではありません。しかし、画像処理では、これで良いパフォーマンスが得られました。つまり、それは場合によって異なります。あなたのケースでテストして決定してください。
2D 配列ではptr
、マトリックスにポイントを作成し、段階的に進行させることができます。
void process(char i)
{
cout << i;
}
int main()
{
const int N = 5;
char mat[N][N] = {
{'a', 'b', 'c', 'd', 'e'},
{'f', '-', '-', '-', 'g'},
{'h', '-', '-', '-', 'i'},
{'j', '-', '-', '-', 'k'},
{'l', 'm', 'n', 'o', 'p'}
};
char *ptr = (char*) mat;
for (int i = 0; i < N - 1; ++i) // Process first row
process(*ptr++);
for (int i = 0; i < N - 2; ++i) // Process column borders
{
process(*ptr);
process(*(ptr + 1));
ptr += N;
}
for (int i = 0; i <= N; ++i) // Process last row
process(*ptr++);
cout << endl;
}
出力:
abcdefghijklmnop