看板 EE_DSnP 關於我們 聯絡資訊
有同學在問作業七要怎麼測試, 下列的 code 可以給大家參考一下... 當然歡迎你們測更多!! ========================================================================= static void printArray(const IntArray& arr) { cout << "Access by index : "; for (size_t i = 0, n = arr.size(); i < n; i++) cout << "[" << i << "] " << arr.getData(i) << " " << endl; cout << "Access by pointer: "; for (size_t i = 0, n = arr.size(); i < n; i++) cout << "[" << i << "] " << *(arr.getPosition(i)) << " " << endl; } int main() { IntArray arr(10); cout << "Initial data for arr ---" << endl; printArray(arr); for (size_t i = 0, n = arr.size(); i < n; i++) arr.setData(i, i*i); cout << "Squared data for arr ---" << endl; printArray(arr); arr.resize(5); cout << "Resize arr to 5 ---" << endl; printArray(arr); arr.resize(12); cout << "Resize arr to 12 ---" << endl; printArray(arr); for (size_t i = 12; i < 20; i += 2) arr.setData(i, i * 3); cout << "Setting out of bound data ---" << endl; printArray(arr); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.134.54
ShooterYang:最上面的const IntArray& arr 是甚麼意思? 12/09 21:21
ric2k1:就是傳進去的是 reference, 所以我們可以省去 array 的copy 12/09 21:27
ric2k1:但是我又不希望 printArray 有權限改到 array 的內容, 12/09 21:28
ric2k1:所以加上 const, 讓傳進去的 arr 變成 read-only. 12/09 21:29
ric2k1:注意: 由於 arr 變成 const object in printArray(), 12/09 21:29
ric2k1:他將只能呼叫 const member function. 12/09 21:30
ric2k1:see post 751. 12/09 21:31
ShooterYang: 所以是傳進去一個object嗎 12/09 21:37
ShooterYang:喔沒事了 謝謝老師的回答 12/09 21:39
ric2k1:Yes. 12/09 22:33
ally01202:不是很懂... 怎樣的結果才對呢... 12/09 23:55
Knossos:Debug一下..第5、9行應該是arr,不是arr1...XD 12/10 23:18
Knossos:第一部份輸出10個元素,應該都要是0。 12/10 23:20
Knossos:第二部份則是輸出標籤的平方:[4]=16.[8]=64 12/10 23:21
Knossos:第三部份改變大小,應該變成輸出五個整數,數字不變 12/10 23:22
Knossos:第四部份再把大小擴大到12,從元素五到十一的值為零 12/10 23:22
Knossos:最後一部份比較特殊一點:元素1~5不變,其餘為零 12/10 23:23
Knossos:但有特例:[12]=36.[14]=42.[16]=48.[18]=54 12/10 23:23
Knossos:共十九個元素 12/10 23:24
Knossos:嗯...這是我輸出的結果,僅供參考...XD 12/10 23:25
Knossos:補充一下:每部分都要有相同的兩組答案,因為過程不同... 12/10 23:26
※ 編輯: ric2k1 來自: 59.121.128.162 (12/11 06:45)
ric2k1:Thanks, 已修改. 12/11 06:45
dryman:cout << "[" << i << "] " << (arr.getPosition(i)) << " 12/11 13:35
dryman: ↑多了一個*印出不是地址 12/11 13:35
dryman:第九行 12/11 13:36
ric2k1:其實我就是要印出內容來比較一下 (應該跟 by index 一樣) 12/11 14:21
ric2k1:不過像你建議印 address 也是不錯的測試方式 12/11 14:21