如何在C ++中删除动态数组的列

问题描述 投票:0回答:2

我需要帮助以删除C ++中的2D数组的列。我已经尝试通过制作数组的副本进行操作。它仅从数组的开始到中间或从中间到结尾成功。进行复制时,女巫算法可跳过数组中不需要的列。

c++ arrays pointers allocation
2个回答
0
投票

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


0
投票

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

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;

}

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

https://repl.it/repls/PrettyTerrificOmnipage

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.