2012-10-24 138 views
0

我被要求创建一个有5行和未知列的矩阵。 而我的老板希望我使用1维缓冲区。连接5行缓冲区。 我不明白这是什么意思,请有人给我一个简单的例子,请!双缓冲区vs双数组C++

随着阵列我可以做

double[][] arr = new double[5][someNumber]; 

但随后他说,大小会受到限制。

所以我不知道他的意思是使用双缓冲一下,我不是很好@ C++

非常感谢你,一个例子是太好了!

+0

['Double buffering'](http://en.wikipedia.org/wiki/Multiple_buffering)是对I/O技术或计算机图形技术的参考,而不是缓冲区或“double”类型的数组'。另外,C不是C++,使用'new'就意味着严格地使用C++。 –

回答

1

对于R行和列C声明double arr[R * C],和arr[i * C + j]是在细胞[i, j]的元素。

这概括为任意的尺寸。

展平这样一个数组可能是一个非常有用的优化,尤其是当您使用动态数组(如std::vector)时,您可以获取单个动态数组而不是每行一个动态数组。

+0

但这是数组不是它,我是说缓冲区 –

+0

@LanNguyen“缓冲区”是一种使用模式,而不是数据类型。 –

+0

@NikosChantziaras所以当你这样做的时候,你是在创建一个二维数组,还是一维,它对我来说看起来是二维的。 –

0

听起来你说

double *arr[5]; 
for(unsigned int x = 0; x < 5; ++x) 
{ 
     arr[x] = new double[someNumber]; 
} 

因为,你知道,你有5个是肯定的,和未知的部分我的假设是,这是你如何引用它。

+0

对我来说,这是一个指针数组,每个指针指向一行的开始,我是正确的吗? –

+0

就是这样。或多或少,这相当于'arr [5] []的*假设*;''arr [0]'将指向某个地址,它将是'someNumber' double的大小。 – M4rc

+0

是的,这也是我想到的,谢谢你的澄清。 –