作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] 作业七...
时间Wed Dec 12 01:46:19 2007
: 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
1F:→ INsoarDEEP:写了半天还是错误百出>"<... 12/12 01:46
2F:推 dryman:就我自己惨痛的经验而言,程式一小段一小段写比较容易成功 12/12 08:19
3F:→ dryman:一小段run它没问题在加上其他的,不然程式码一长怎麽死的 12/12 08:20
4F:→ dryman:都不知道。 12/12 08:21
5F:→ ric2k1:感谢分享惨痛经验, 的确程式最好是写一段测一段比较好 12/12 08:39