【问题标题】:How to delete columns of dynamic array in C++如何在 C++ 中删除动态数组的列
【发布时间】:2019-12-24 23:53:00
【问题描述】:

我需要帮助删除 C++ 中的二维数组列。我通过制作数组的副本尝试了该操作。它仅从数组的开头到中间或中间到结尾成功。女巫算法在复制时跳过数组中不需要的列。

【问题讨论】:

  • 这个二维数组是由什么组成的?你是怎么定义的?
  • 您试图通过复制删除某些内容?这里似乎有些不对劲...无论如何,您都需要提供有关到目前为止所拥有的更多详细信息,因为定义二维数组的方法有很多(其中一些无需显式删除列)。
  • 你是对的,但是如果使用指针定义 2D,如果我使用矢量,解决方案将很容易

标签: c++ arrays pointers allocation


【解决方案1】:

由于是动态数组,所以数组的变量是第一个值的指针,因此您无法获取大小,甚至无法使用 sizeof 来获取大小,但是在不知道大小的情况下使用动态数组,固定或运行时抛出变量

【讨论】:

    【解决方案2】:

    这可能不是最好的方法,但它是一个潜在的解决方案

    int removeColumn(int a){
    vector<vector<int>> ret(M);
    int i = 0;
    for(vector<int> temp : Arr){
            vector<int> tempp(N-1);
            copy(temp.begin(), temp.begin()+a, tempp.begin());
            copy(temp.begin()+a+1,temp.end(),tempp.begin()+a);
            ret[i] = tempp;
            i++;
    }
    Arr = ret;
    return 0;
    

    }

    本质上,您遍历每一行并使用两个复制语句从开头复制到索引,从所述索引 + 1 复制到结尾。我敢肯定有一种方法可以更优雅地做到这一点,您可以尝试查看 for_each 循环,但我怀疑您是否可以仅使用复制来做到这一点。用这段代码测试过。

    https://repl.it/repls/PrettyTerrificOmnipage

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2018-05-01
      • 2016-07-08
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多