Re: [問題] 用class宣告的方法運算動態陣列

看板C_and_CPP作者 (法國號有氣質)時間8年前 (2015/07/25 04:06), 8年前編輯推噓2(205)
留言7則, 5人參與, 最新討論串2/2 (看更多)
: → fatrabitree: 你是要練習還是要用? 07/24 01:43 : → fatrabitree: 要用的話就用std::vector就好了 07/24 01:43 : → fatrabitree: 要練習的話也可以去翻vector的實作 07/24 01:44 我找到用vector寫動態陣列的code了,不過我遇到新的問題: 在main裡面呼叫副程式,陣列有傳進去副程式裡面,在副程式裡面對陣列做運算也有成功 ,不過沒有回傳到main裡面......我應該在副程式裡加什麼動作嗎? #include <iostream> #include <vector> #include "conio.h" using namespace std; void cal1(vector<vector<int> > ivec){ for(int y = 0; y != ivec.size(); ++y) { for(int x = 0; x != ivec[0].size(); ++x) { cout << ivec[y][x] << endl; ivec[y][x] = ivec[y][x] + 1; cout << ivec[y][x] << endl << endl; // 這裡的輸出的確有對ivec做改變了 } } } int main() { const int sizex = 3; const int sizey = 2; vector<vector<int> > ivec(sizey, vector<int>(sizex)); for(int y = 0; y != sizey; ++y) { for(int x = 0; x != sizex; ++x) { ivec[y][x] = y + x; } } for(int y = 0; y != sizey; ++y) { for(int x = 0; x != sizex; ++x) { cout << ivec[y][x] << endl; } } cout << endl << endl; //未呼叫副程式前的初始值是0,1,2,1,2,3 cal1(ivec); //各元素值加1,在副程式裡有cout,結果是正確的 cout << endl; for(int y = 0; y != sizey; ++y) { for(int x = 0; x != sizex; ++x) { cout << ivec[y][x] << endl; } } //再cout出來時,ivec沒有改變......應該是沒有回傳回來 //我應該在副程式裡加什麼,才能讓改變後的值傳回來呢? //順便問一下:我如果引入兩組以上的陣列到副程式裡做運算,且兩組 //陣列都有被改變,我要怎麼把它們都傳回main呢? system("pause"); } : 推 EdisonX: 資料量還算正常 (算一下大概 500MB) , 不過程式跑一週... 07/25 01:49 : 推 Sunal: 看原PO跑數值模擬應該不是CS本科 07/25 01:50 我如果是CS本科,連引數都不會的話,我真的該去跳樓了...... 我以前大四去修C++,學期還沒到一半就已經開始混了......學期末的上機考也很爛, 資料結構的觀念也很弱...... : → EdisonX: 是 Alg. 那裡沒弄好 , 還是 O2 沒開 , 還是本來就那麼久? 07/25 01:50 : → Sunal: 畢竟物理現象要算的對才是重要 不過跑一週... 07/25 01:51 : → EdisonX: 我跑超過 3 分鐘就受不了要停下來了.. 萬一一週後的結果 07/25 01:52 : → EdisonX: 是錯的 , 那不是還要再重跑一週 , 想到都軟了 Orz 07/25 01:52 : → EdisonX: 對了 , 有種東西叫 intel library ... 07/25 01:53 : → EdisonX: 然後你發的 sample code, 叫 intel library 做比你自己 07/25 01:57 : → EdisonX: 寫速度還要快很多。 07/25 01:57 我在讀計算流體力學(數值模擬)方面的博班,跑一週還算短的, 以前我們研究室碩班的學妹,用套裝軟體(FLUENT)跑80萬網格的VOF(有自由液面的那 種case),還有跑超過兩個星期的...... 所以我們都要先測試小domain,確定物理現象是對的,才敢跑大domain。 其實說實話,我們只要會基本的程式流程就可以跑模擬了,我們難是難在數學的model 不易理解。所以當我需要稍微進階一點點的程式技巧的時候,我就需要來這裡求助了.. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.130.48 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1437768418.A.94D.html ※ 編輯: moussorgsky (36.228.130.48), 07/25/2015 04:08:53 ※ 編輯: moussorgsky (36.228.134.66), 07/25/2015 04:32:54 ※ 編輯: moussorgsky (36.228.134.66), 07/25/2015 04:33:57

07/25 07:43, , 1F
我會了~在引入副程式時使用指標,在call副程式時使
07/25 07:43, 1F

07/25 07:43, , 2F
用解指標。再次謝謝大家的指教!
07/25 07:43, 2F

07/25 10:39, , 3F
跑兩個星期會不會太誇張 是不是CPU被偷換成286 >_<
07/25 10:39, 3F

07/25 11:09, , 4F
&
07/25 11:09, 4F

07/25 11:59, , 5F
太慢的話是不是先考慮搞平行化甚至cuda
07/25 11:59, 5F

07/25 19:51, , 6F
出於好奇,問一下為什麼要用malloc,一般來說可以用ne
07/25 19:51, 6F

07/25 19:51, , 7F
w吧?
07/25 19:51, 7F
文章代碼(AID): #1LifhYbD (C_and_CPP)
文章代碼(AID): #1LifhYbD (C_and_CPP)