【发布时间】:2011-05-08 22:12:27
【问题描述】:
void reserve( int newCapacity ){
Object *oldArray = objects;
int numToCopy = newCapacity < theSize ? newCapacity : theSize;
newCapacity += SPARE_CAPACITY;
objects = new Object[newCapacity];
for( int k=0; k < numToCopy; k++ )
objects[k] = oldArray[k];
theSize = numToCopy;
theCapacity = newCapacity;
delete [ ] oldArray;
}
我怎样才能实现擦除方法,可能使用reserve()?
iterator erase ( iterator position ){
if (position + 1 != end())
copy(position + 1, finish, position);
--finish;
return position;
}
【问题讨论】:
-
您是否考虑过查看现有的开源实现?
-
好吧,我看了 stl 源,但它很复杂。
-
std::vector有什么问题吗? -
那么乐趣应该是找到答案,而不是要求它;)
-
好吧,我已经完成了我自己的向量类的实现。很有趣:)