單純講 array, 可以考慮 boost 的做法.
boost::array<T> 是個靜態一維陣列,operator[] 傳回 reference to T.
一維陣列的範例:array<int, 10>; // 10 個 int 的 array
二維陣列的範例:array<array<int, 20>, 10>; // 10 x 20 的二維 int 陣列
用起來很簡單,假設以上述型別宣告了一個二維陣列 2DArray, 要存取時就像這樣:
2DArray[3][7] = 123;
int i = 2DArray[7][1];
用起來很直覺,就像原生的一樣。
如果嫌太難看,就用 typedef 把 array<array<int, 20>, 10> 包起來.
當然還可以自己寫一個動態大小的版本,至於要如何做 boundary check 也可以用
policy class 來決定,看要不檢查、assert 檢查、丟 exception 都好,隨你高興.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.19.235