推 soheadsome: memset 09/16 09:22
推 diabloevagto: vector 不用嗎? 09/16 09:24
※ 編輯: xxxx5801 (163.15.29.107), 09/16/2014 10:33:40
推 soheadsome: 我不懂他的快是指? 09/16 11:08
推 pauliaia: 如果是搬資料 你一共搬了八次資料 不就是極限了 09/16 14:27
→ pauliaia: 不過如果考慮到branch prediction 寫在一起 理論上會更 09/16 14:28
→ pauliaia: 快 不過如果是C++ 樓上很多建議使用STL 相關物件 相對更 09/16 14:29
→ pauliaia: 快許多 不過他就不是一個單純Array 而是物件了 09/16 14:31
推 b9707114: 搜尋memcpy,這樣可以省去for迴圈每次判斷條件的時間 09/16 19:53
→ b9707114: 抱歉,查資料感覺我說得應該有問題,先無視吧! 09/16 20:11
→ tomnelson: memcpy((void*)&c[0],(void*)&a[0],sizeof(a)); 09/16 23:52
→ tomnelson: memcpy((void*)&c[4],(void*)&b[0],sizeof(b)); 09/16 23:52
→ tomnelson: 兩行做完,至於快不快不一定,一般來說也只快一點點而已! 09/16 23:54
推 LPH66: 其實不管怎麼改寫, 該搬的東西就是那些, 頂多只有跟搬資料 09/16 23:59
→ LPH66: 無關的小地方 (例如五樓提的 branch prediction) 有差而已 09/16 23:59
→ LPH66: 現代電腦在搬這種數萬個以內的小資料已經沒什麼差了... 09/17 00:00
→ LPH66: 隔壁版版友有一句話叫做「骯髒事不滅定律」就是在講這回事 09/17 00:01
→ LPH66: 另外 array 複製這種事要用 STL 寫的話有個 std::copy 可用 09/17 00:02
→ LPH66: 以此例就是 copy(a,a+4,c); copy(b,b+4,c+4); 09/17 00:02
→ LPH66: 但其實它骨子裡還是原來的 for 迴圈... 09/17 00:03
先感謝各位大大的回答,可能是我問得不夠清楚
我的意思是 能不能有更方便的方法可以更直接地結合兩個陣列
比方說利用函式或是語法 輸入兩個陣列就能直接結合兩個陣列的方法
感謝!
※ 編輯: xxxx5801 (163.15.29.64), 09/17/2014 08:42:55
→ PoorLoser: 沒有, 兩個陣列基底位址不太可能連續, 所以不能附加 09/17 23:49
→ PoorLoser: 不然自己用 malloc 寫一個 09/17 23:50
推 LPH66: 其實如果原 PO 是想要有語意的話, 自己寫一個其實是個不錯 09/18 00:06
→ LPH66: 的答案; 總之 C++ Runtime / STL 裡沒有這個函式就是了 09/18 00:07
→ LPH66: 是說其實剛才才想到 copy 的回傳值是目標的終點後一格 09/18 00:08
→ LPH66: 所以我寫的兩個 copy 其實可以合成一個, 這就比較能推廣了: 09/18 00:08
嗯 感謝回答!
※ 編輯: xxxx5801 (163.15.29.110), 09/19/2014 10:38:00
推 xxxx9659: 推數字ID 09/28 17:03