在C/C++中將兩個二維陣列初始化為零 - 程式人生

文章推薦指數: 80 %
投票人數:10人

我的問題是我們可以使用 int a[10][10] = {{0}} 初始化二維陣列嗎? 根據initialize-large-two-dimensional-array-in-c中的最高答案, int array [ROW][COLUMN] = {0}; 程式人生>c++>在C/C++中將兩個二維陣列初始化為零 【c++】在C/C++中將兩個二維陣列初始化為零 阿新••發佈:2021-01-27 我的問題是我們可以使用inta[10][10]={{0}}初始化二維陣列嗎?根據initialize-large-two-dimensional-array-in-c中的最高答案,  intarray[ROW][COLUMN]={0};  這意味著:“將第一行中的第一列初始化為0,並將所有其他專案初始化為靜態儲存持續時間,即將它們設定為零。

”但是,在檢查C99Standard9899:TC3和C++11StandardN4296時,我沒有發現任何官方記錄支援此答案中提到的內容。

此外,當我嘗試使用以下解決方案解決LeetCode474.OnesandZeroes問題時,確實遇到了此問題。

//Tomakequestionclear: //Itseemsthat"intdp[m+1][n+1]={{0}}"cannotinitilizeallelemto0 //"memset(dp,0,sizeofdp)"isnecessarytopasstheOJtest.Anyidea? classSolution{ public: //m:0s,n:1s intfindMaxForm(vector&strs,intm,intn){ intdp[m+1][n+1]={{0}}; //Wewillget"WrongAnswer"withoutmemset()functionbelow memset(dp,0,sizeofdp); for(auto&str:strs){ autocost=getCost(str); for(inti=0;i+cost.first<=m;++i) for(intj=0;j+cost.second<=n;++j) dp[i][j]=std::max(dp[i+cost.first][j+cost.second]+1, dp[i][j]); } intmax=0; for(inti=0;i<=m;++i) for(intj=0;j<=n;++j) max=std::max(max,dp[i][j]); returnmax; } private: pairgetCost(conststring&str)const{ intcnts[]={0,0}; for(charc:str)++cnts[static_cast(c=='1')]; return{cnts[0],cnts[1]}; } }; 解決辦法 您的程式碼是C++程式碼。

有關C的其他問題和文件無關。

C和C++是不同的語言。

在StandardC++中,必須在編譯時知道陣列尺寸。

intdp[m+1][n+1]是一個錯誤(更不用說嘗試對其進行初始化了)。

可能您正在使用提供C++VLA作為非標準擴充套件的編譯器。

在那種情況下,對於程式碼的行為以及={{0}}在程式碼上的行為,您將受制於特定的編譯器。

C++標準將無濟於事。

我的建議是避免使用非標準的構造,以便保留標準檔案提供的保證。

如何將std::vector轉換為std::vector? «上一篇 如何避免一直寫std::reference_wrapper版本模板?下一篇» 相關推薦 在C/C++中將兩個二維陣列初始化為零 在C++中將大型二維陣列初始化為所有一個值 將靜態成員陣列初始化為零 將可變長度陣列初始化為零 如何將二維陣列初始化為類變數? 在C++中將雙陣列初始化為零的過程中崩潰 C++11:用另一個constexprchar陣列初始化constexprchar陣列 C++11中類作用域的陣列初始化 關於C++中的二維陣列初始化 編譯器如何在C中將陣列初始化(為零)? 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 新加入文章



請為這篇文章評分?