[問題] 大矩陣

看板C_and_CPP (C/C++)作者 (成登)時間10年前 (2016/04/01 13:34), 編輯推噓3(305)
留言8則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 各位版大您好, 小弟是C++新手,目前遇到要宣告一個100000 X 300000的二維矩陣 目前是利用下面的code去宣告 int **data; data = new int*[100000]; for (i=0;i<N;i++){ data[i] = new int[300000]; } 但是都直接跑std::bad_alloc 想請問一下版大這樣要怎麼解決??拜託惹~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.248.82 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1459488869.A.A8E.html

04/01 13:51, , 1F
你可以算算看 100000X300000 的int要佔多大記憶體 ...
04/01 13:51, 1F

04/01 13:52, , 2F
112 GB 你有這麼多記憶體嗎?
04/01 13:52, 2F

04/01 13:55, , 3F
這麼大你只能分區計算再合併了吧
04/01 13:55, 3F

04/01 14:05, , 4F
我有一根柴很長 比我的爐子還要長 該怎麼辦
04/01 14:05, 4F

04/01 14:07, , 5F
威猛
04/01 14:07, 5F

04/01 16:00, , 6F
可見你的問題不適合用矩陣來解 試試其他方法吧
04/01 16:00, 6F

04/01 17:43, , 7F
看是不是 sparse matrix 不然記憶體應該會不夠用
04/01 17:43, 7F

04/01 17:44, , 8F
實作的空間複雜度會下降很多 O(m*n) -> O(m+n)
04/01 17:44, 8F
文章代碼(AID): #1M_WXbgE (C_and_CPP)
文章代碼(AID): #1M_WXbgE (C_and_CPP)