看板 C_and_CPP 關於我們 聯絡資訊
http://pastie.org/2332076 各位好, 我寫了一個演算法,傳入兩個陣列,然後計算兩個陣列的總距離。 陣列有可能是一般數值的陣列, 也有可能是很多個向量所組成的陣列。 (程式碼中是 double[10][5], 五維向量, 一共十個。) 所以我寫了 template, 不過 main 裡面的最後一行總是編譯不過, 請問要怎麼改才好? - 另外...在 C 語言中,沒有 template 的情況下, 能夠達到相同的效果嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.153.51 ※ 編輯: DJWS 來自: 59.115.153.51 (08/07 07:58) ※ 編輯: DJWS 來自: 59.115.153.51 (08/07 08:02)
Favonia:看起來是因為 T 前面要是 double[5] 後面要是 double* 08/07 08:24
Favonia:(C++98 14.8.2.4/2) 我想根本原因是 distance2 的參數會被 08/07 08:26
Favonia:調整成 double*. 不把陣列(直接)當介面一部分就沒事。 08/07 08:29
Favonia:C 的話也許可模仿 qsort 硬幹 :) 08/07 08:31
Favonia:(關於調整可看 C++03 8.3.5/3) (之前應該打 C++03) 08/07 08:34
loveme00835:http://codepad.org/FRKUgSiO 08/07 10:51
loveme00835:排版亂掉...= =" 08/07 10:54
littleshan:這是語法上的缺陷,C++的array不是first-class object 08/07 11:26
littleshan:所以把它當成value傳遞會出現許多問題 08/07 11:27
kevingwn:C的話就這樣吧XD http://codepad.org/RwEP2xLT 08/07 12:57
kevingwn:啊,有些地方打錯了orz 08/07 13:06
firejox:二維陣列與雙重指標不一樣阿... 08/07 15:36
firejox:http://pastie.org/2333600 08/07 16:21
DJWS:謝謝各位! 參考各位意見後寫成這樣http://pastie.org/2333953 08/07 18:48
DJWS:另外我也試了 void* ,亦可行,只不過程式碼就會多了一點! 08/07 18:52
Favonia:@firejox: void 指標位移是編譯器自己的延伸功能 :P 08/07 18:57
Favonia:例如gcc: gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html 08/07 18:59
kevingwn:唉唉...還是C++好寫 http://boost.codepad.org/0Rk21rJd 08/07 21:24
firejox:@Favonia:I know.For safe,it should use unsinged char 08/07 21:41
firejox:pointer cast... 08/07 21:41
firejox:不過假如是gcc的話 那還可以用typeof XDD 08/07 21:44
albertviking:偷偷借問 08/07 23:02
albertviking:我在多看幾次好了 抱歉>< 08/07 23:08