【问题标题】:How to quickly get one dimensional int array from int **?如何从 int ** 快速获取一维 int 数组?
【发布时间】:2012-01-13 01:56:14
【问题描述】:

我想从我的双整数指针中获取一维数组。指针的内存分配如下:

listOfTxtsContents = new int *[ROWS];
for( int i = 0 ; i < ROWS ; i++ )
{
    listOfTxtsContents[i] = new int[COLUMNS];
    for(int j = 0; j < COLUMNS; ++j)
        listOfTxtsContents[i][j] = 0;
}

然后每一行都包含一些数据,我想将其放入数组中,这样一维数组就会被连续的行填充。

【问题讨论】:

    标签: c++ multidimensional-array memory-management


    【解决方案1】:

    很确定这样的事情应该可以工作:

    array[ROWS * COLUMNS];
    for(size_t i = 0; i < ROWS; ++i)
      memcpy(array + i * COLUMNS, listOfTxtsContents[i], COLUMNS * sizeof(int));
    

    【讨论】:

    • 这个想法没有错,但有些细节是错误的。例如,你有ROWS,你需要COLUMNS,反之亦然。
    • 我犹豫了一下,因为我在项目中输入了错误的数字,但这确实是一个很好的解决方案。 +1
    【解决方案2】:

    分配大小为 ROWS*COLUMNS 的一维整数数组;将每个 listOfTxtsContents[i][j] 分配给元素 i*COLUMNS+j。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多