看板 EE_DSnP 關於我們 聯絡資訊
: size_t IntArray::size() const : { : return _size; : } : int IntArray::getData(const size_t i) const : { : cout << _data[ i ] << endl; : return 0; : } 要 return _data[i] 吧? : int* IntArray::getPosition(const size_t i) const : { : cout << _data << endl; : return 0; : } return 0 as a pointer, 外面接的人 *p 之後當然會當掉... : void IntArray::resize(const size_t s) : { : if ( s < _size ) : { _size = s; } : if ( _size < s <= _capacity ) : { _size = s; } 記得要將多出來的清成 0 : if ( s > _capacity ) : { : while ( s > _capacity ) : { : _capacity = _capacity*2; : }; 記得要 reallocate 新的 _capacity 大小的 int array... 將資料 copy 過去, 然後將舊的 delete 掉 : } : } : void IntArray::setData(const size_t i, const int& v) : { if ( i >= _size ) : { resize(i+1); } _data[i] 沒設? : else : _data [ i ] = v; : } : 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.128.162
INsoarDEEP:寫了半天還是錯誤百出>"<... 12/12 01:46
dryman:就我自己慘痛的經驗而言,程式一小段一小段寫比較容易成功 12/12 08:19
dryman:一小段run它沒問題在加上其他的,不然程式碼一長怎麼死的 12/12 08:20
dryman:都不知道。 12/12 08:21
ric2k1:感謝分享慘痛經驗, 的確程式最好是寫一段測一段比較好 12/12 08:39