在C ++中将1D数组作为2D数组访问

丁克尔克

这困扰了我一段时间。很多时候,我发现自己制作了一个大缓冲区来保存“最大”数量的数据。这有助于避免每次下一个数据集的大小更改时动态分配和取消分配缓冲区。

例如,说我有一个数组,其实际可用大小太大了,但我知道有用数据的长度。

int amountOfData = 9;
char data1D[100] = some data that is only 9 bytes long stored in a 100 byte array

可以说我有一个算法要在使用2D数组索引的数据集上运行。因此,我希望能够按以下方式访问数据:

cout << "I am accessing this data as a 2D array: " << data1D[0][1] << endl;

可以说,对于这种算法,我知道2D数组的xlength和ylength将是:

int xlength = 3;
int ylength = 3;

对于此迭代,因为amountOfData = 9但是,下一次迭代的长度可能不同。就是 他们可以xlength = 4ylength = 4给予amountOfData = 16

我想进行某种类型的转换,使我可以使用2D数组索引来转换1D数组。我知道我最初的1D长度有多长,这告诉我我的2Dxlength以及ylength现在有多长,因此无需使用newmalloc只要初始100字节足以容纳任何对我有用的数据,这应该很容易做到

我意识到:

char** data2d = (char**) data1D;

将不起作用,因为编译器不知道第二维的大小。但是我会在运行时知道它是什么!

造成这种状况的根本原因是什么?有什么解决方法吗?我有什么想念的吗?

艾玛迪斯

一旦您只知道运行时数组的长度,我想最好不使用2D数组来解决此问题,而是使用函数来模拟它。例如,在C中:

char data1D[1000] = {0};

unsigned int getElement(unsigned int x, unsigned int y, 
            unsigned int xMax, unsigned int yMax)
{
  // Do some error tests
  return ((unsigned int *) data1D)[x*xMax + y];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ 2D数组到1D数组

来自分类Dev

如何在C ++中将OpenCV 2D矩阵转换为1D数组?

来自分类Dev

是否可以使用1D索引访问C ++ 2D int数组?

来自分类Dev

从C中的2D数组中产生1D数组

来自分类Dev

在C中如何基于1D数组分配2D数组?

来自分类Dev

在C ++中使用1D数组初始化2D数组

来自分类Dev

在C ++中的2D数组中声明指向1D数组的指针

来自分类Dev

尝试填充2d数组,但它仍然是1d数组C ++

来自分类Dev

从C中现有的1D数组创建2D数组?

来自分类Dev

用1d char数组附加2d char数组(在C中)

来自分类Dev

在 C 中将数组从 1D 重塑为 ND

来自分类Dev

C ++ AMP中1D和2D数组上operator []的行为。

来自分类Dev

C ++语法差异:2D和1D数组(指针算术)

来自分类Dev

在C ++中通过引用传递1d和2d数组

来自分类Dev

在C ++中,2D数组在整体操作上是否比行为像2D数组的1D数组慢?

来自分类Dev

C ++-1D中的动态数组有效,而2D中的动态数组无效

来自分类Dev

如何在c ++中以特定形式将内容从1d数组传输到2d数组?

来自分类Dev

在C#WPF中将2D数组插入excel

来自分类Dev

如何使用C ++将2D矩阵的元素垂直复制到1D数组

来自分类Dev

如何使用1维在C中访问2D数组

来自分类Dev

如何使用1维访问C中的2D数组

来自分类Dev

如何在C ++中访问2D动态数组中的1个元素

来自分类Dev

如何在C#中将2D数组转换为2D列表

来自分类Dev

Visual C#如何将两个1D string []数组合并为一个2D string [,]数组

来自分类Dev

如何在C#中将3D数组类型转换为1D数组类型?

来自分类Dev

如何在Python中将1D C数组绘制为曲面

来自分类Dev

如何在C#中将2D对象数组转换为2D字符串数组?

来自分类Dev

在C#中将AES数据矩阵的单维数组转换为2D数组

来自分类Dev

如何在C#中将2-D数组快速转换为1-D数组?

Related 相关文章

  1. 1

    C ++ 2D数组到1D数组

  2. 2

    如何在C ++中将OpenCV 2D矩阵转换为1D数组?

  3. 3

    是否可以使用1D索引访问C ++ 2D int数组?

  4. 4

    从C中的2D数组中产生1D数组

  5. 5

    在C中如何基于1D数组分配2D数组?

  6. 6

    在C ++中使用1D数组初始化2D数组

  7. 7

    在C ++中的2D数组中声明指向1D数组的指针

  8. 8

    尝试填充2d数组,但它仍然是1d数组C ++

  9. 9

    从C中现有的1D数组创建2D数组?

  10. 10

    用1d char数组附加2d char数组(在C中)

  11. 11

    在 C 中将数组从 1D 重塑为 ND

  12. 12

    C ++ AMP中1D和2D数组上operator []的行为。

  13. 13

    C ++语法差异:2D和1D数组(指针算术)

  14. 14

    在C ++中通过引用传递1d和2d数组

  15. 15

    在C ++中,2D数组在整体操作上是否比行为像2D数组的1D数组慢?

  16. 16

    C ++-1D中的动态数组有效,而2D中的动态数组无效

  17. 17

    如何在c ++中以特定形式将内容从1d数组传输到2d数组?

  18. 18

    在C#WPF中将2D数组插入excel

  19. 19

    如何使用C ++将2D矩阵的元素垂直复制到1D数组

  20. 20

    如何使用1维在C中访问2D数组

  21. 21

    如何使用1维访问C中的2D数组

  22. 22

    如何在C ++中访问2D动态数组中的1个元素

  23. 23

    如何在C#中将2D数组转换为2D列表

  24. 24

    Visual C#如何将两个1D string []数组合并为一个2D string [,]数组

  25. 25

    如何在C#中将3D数组类型转换为1D数组类型?

  26. 26

    如何在Python中将1D C数组绘制为曲面

  27. 27

    如何在C#中将2D对象数组转换为2D字符串数组?

  28. 28

    在C#中将AES数据矩阵的单维数组转换为2D数组

  29. 29

    如何在C#中将2-D数组快速转换为1-D数组?

热门标签

归档