看板 EE_DSnP 關於我們 聯絡資訊
我好不容易寫完了,但是一Run下去就掛掉了,可否請大家幫幫忙指點一下呢? 以下為code #include <iostream> #include <cstdlib> #include <vector> using namespace std; class IntArray { public: IntArray(const size_t n = 0) { _size = n; _capacity = n; _data = new int [ n ]; delete []_data; }; size_t size() const; int getData(const size_t i) const; int* getPosition(const size_t i) const; void resize(const size_t s); void setData(const size_t i, const int& v); private: int *_data; size_t _size; size_t _capacity; }; size_t IntArray::size() const { return _size; } int IntArray::getData(const size_t i) const { cout << _data[ i ] << endl; return 0; } int* IntArray::getPosition(const size_t i) const { cout << _data << endl; return 0; } void IntArray::resize(const size_t s) { if ( s < _size ) { _size = s; } if ( _size < s <= _capacity ) { _size = s; } if ( s > _capacity ) { while ( s > _capacity ) { _capacity = _capacity*2; }; } } void IntArray::setData(const size_t i, const int& v) { if ( i >= _size ) { resize(i+1); } 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: 140.112.236.234
INsoarDEEP:阿我知道錯在哪裡了... 12/12 01:46
flarehunter:constructor裡new 完就馬上delete掉了…?? 12/12 09:50
ric2k1:這也是個錯誤 12/12 10:59
lionel20002:resize沒那麼簡單 getposition也不對 12/12 14:06