C 接口到线性内存缓冲区

C++ interface to a linear memory buffer

本文关键字:内存 缓冲区 线性 接口      更新时间:2023-10-16

我有一个我想保留在连续的线性内存缓冲区中的大数据集。此内存缓冲区采用STL向量的形式。

数据集分组为层次结构:

increment--->image number--->pixel number

有100个增量,每增加10张图像,每个图像具有320x240像素。

除了采用以下(钝性)方式以访问线性内存缓冲区的特定像素元素:

buffer[increment*image_number*320*240 + column_number*240+row_number]

是否有更直观的接口可以访问此缓冲区的特定像素元素,同时保持数据连续?

您可以编写一个简单的接口过载operator()

PixelData& operator()(size_t increment, size_t image_number, size_t row_number, size_t column_number)
{
    return buffer[increment*image_number*320*240 + column_number*240+row_number];
}

这样,可以访问以下像素:

dataset(increment, img, row, column);