簡體   English   中英

如何在C++中刪除動態數組的列

[英]How to delete columns of dynamic array in C++

我需要幫助來刪除 C++ 中的二維數組列。 我已經通過制作數組的副本來嘗試該操作。 它只從數組的開始到中間或中間到末尾成功。 在復制時跳過數組中不需要的列的女巫算法。

由於是動態數組,因此數組的變量是第一個值的指針,因此您無法獲取大小,甚至無法使用 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;

}

本質上,您遍歷每一行並使用兩個復制語句從開頭復制到索引,然后從所述索引 + 1 復制到結尾。 我確信有一種方法可以更優雅地做到這一點,您可以嘗試查看 for_each 循環,但我懷疑您是否可以僅使用 copy 來完成。 使用此代碼對其進行了測試。

https://repl.it/repls/PrettyTerrificOmnipage

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM