想一想这样实现可以吗 ?
我们都知道 vector是个动态连续序列式容器
,他在申请空间时,如果发生扩容将会将内部元素整体移动到新申请出来的空间上。
我们 来看看realloc 函数
void realloc(void src,sizeof(Type)* num)**
想一想可以实现吗 ?
我们都知道,当relloc的源指针是NULL 的时候,他跟malloc的功能完全相同。
relloc 申请成功(我们)将会(强转)返回新的指针;
但是 !!! 别忘了 ,relloc 它可能回原地扩容。原地空间够申请的话 ,relloc的首地址是不会变的。 这个时候你想想,如果我们通过构造新建 了 一个空的容器,现在我们要进行预申请空间 这时如果使用了relloc它可以申请空间成功,可你别忘了,默认构造出来的对象的首地址时 nullptr ;这将导致无法访问,更无法写入!! 我们的迭代器在这里根本不能够解引用的!就算从尾部开始定义迭代器,它也将无法避免0号下标无法赋值,
所以 relloc是不能用在这种场合下扩容的!!