ポインター演算を使用する次のコードがあり、std::span
(または、おそらく) を使用して置き換えたいと考えていますgsl::span
。このコードは、それぞれが連続する 4 バイトで表される多数のピクセルを繰り返し処理し、青と緑の色を更新します。
auto* row = (uint8_t*)buffer->data;
for (auto y = 0; y < buffer->height; ++y) {
auto* pixel = (uint32_t*)row;
for (auto x = 0; x < buffer->width; ++x) {
auto blue = x + blueOffset;
auto green = y + greenOffset;
*pixel++ = ((green << 8) | blue);
}
row += buffer->pitch;
}
buffer->data
Windows関数のvoid*
呼び出しから返されます。VirtualAlloc(...)
C++ Core GuidelinesおよびModerns C++std::span
で提案されているように、 などの安全で最新の C++ を使用するには、このコードをどのように記述できますか?