作者INsoarDEEP (green)
看板EE_DSnP
标题[问题] 作业七...
时间Wed Dec 12 01:34:51 2007
我好不容易写完了,但是一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
1F:→ INsoarDEEP:阿我知道错在哪里了... 12/12 01:46
2F:推 flarehunter:constructor里new 完就马上delete掉了…?? 12/12 09:50
3F:推 ric2k1:这也是个错误 12/12 10:59
4F:推 lionel20002:resize没那麽简单 getposition也不对 12/12 14:06