【问题标题】:How to convert double pointer matrix to a single pointer vector in c++?如何在 C++ 中将双指针矩阵转换为单指针向量?
【发布时间】:2016-08-07 05:50:32
【问题描述】:

我有一个双指针矩阵,我想在 C++ 中将其转换为单指针向量。 这是代码:

int main(){
    int AA[2][2] = {1,2,3,4};
    int i,j,k;
    int kolB,barB;
    int **BB,**CC;
    int *A,*B,*C;

    BB = new int*[barB];
    CC = new int*[2];

    for(i=0;i<kolB;i++){
        BB[i] = new int[kolB];
        CC[i] = new int[kolB];
    }

    free(BB);
    free(CC);

    return 0;
}

我想在 *A 中插入 **AA 值,你们能帮帮我吗?

【问题讨论】:

  • 请不要混淆newfree()
  • 我使用malloc时出错,所以我就这样使用
  • 改用delete[]
  • 我如何将 **BB 转换为 *B?
  • “我使用 malloc 时出错,所以我就这样使用” 这就是猜测编程的问题:你把它弄更糟了 i>,不是更好。为什么不采用 C++ 书中推荐的方法?

标签: c++ arrays pointers matrix


【解决方案1】:

如果我正确理解您的问题,您希望访问双指针数组中的每个元素并将其放入单指针数组中,如下所示:

//assuming kolB,barB,**BB have been initialized
B=new int[kolB*barB];//create a one dimensional integer array to be pointed to by int* B

//then copy the value from double pointer array to this new one dimensional array
for(int i=0;i<barB;i++)
   for(int j=0;j<kolB;j++)
       B[(i*barB)+j]=BB[i][j];//you need to copy each value

如果您正在考虑使用B=(int*)BB; 并像B[i] 一样访问它,那将行不通,所以不要。顺便说一句,您问题的评论部分有一些有趣的 cmets,您可能想看看它们并改进您的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 2018-11-18
    • 2020-12-10
    • 2013-02-20
    • 2021-07-22
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多