我需要帮助以删除C ++中的2D数组的列。我已经尝试通过制作数组的副本进行操作。它仅从数组的开始到中间或从中间到结尾成功。进行复制时,女巫算法可跳过数组中不需要的列。
由于是动态数组,所以数组的变量是第一个值的指针,因此您无法获取大小,甚至无法使用sizeof来获取大小,但是在任何情况下都不会使用动态数组而无需知道大小,或者固定或在运行时抛出变量
这可能不是最好的方法,但这是一个潜在的解决方案
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
希望这会有所帮助