精華區beta Programming 關於我們 聯絡資訊
※ 引述《JeffHung (御風只配做笨木頭)》之銘言: : ※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言: : : 其實我看過的較佳實作方式, : : 是去 overload operator(), : : 也就是 T &operator()(size_t x, size_t y); : : 這樣就能直接以 (x, y) 存取內容, : 我個人覺得 overload operator() 對這個例子來說,不太恰當。 : 因為 overload operator() 後,其「長相」就會很像 functor, : 但一般 functor 是 stateless 的,而在 2D array 的使用上, : 其行為卻不是 stateless,反而大大有關。因此,overload : operator() 反而會容易讓使用者迷惑。 我覺得到是不會耶 如果以數學的思維角度切入的話 都是 function 就算是陣列 T f[20]; ,也只是一個 f:{0,1,2,...,19}->T 但後來也發展到了 map,可以用 A["abcd"] = ooxx; 之類的用法 [] 跟 () 到後來自己是用 function 的概念說服自己,所以可以更廣的來活用。 (是沒有看過有什麼書特別對這方面多解釋什麼,這只是純屬個人自己想法) : : 至於 .at(x, y) 的功能一般是做成會 check boundary 的版本。 : 用 .element(x, y) 或 .get(x, y) 也都可以啦,這也跟上面一樣, : 是 naming convension 的 issue。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.56.59