释放空间的操作
来源:2-7 避免复杂度的震荡
易萧
2017-07-21
为啥resize操作会把data[size]这个元素抹掉。data[size]不是正好在释放空间后原来capacity/2的最后一个元素么。
还有对于后面capacity/4的时候才折半释放,这时候data[size]也应该完全不用提前备份了,它就是存在新的数组中的。
写回答
2回答
-
liuyubobobo
2017-07-22
我觉得我没有特别理解你的问题,如果下面的陈述没有回答你的问题,请补充的你问题。。。
resize的过程中,新开辟了一片空间,这片空间和原来data指针中指向的空间一点关系都没有。所以需要将原来空间里的数据挪到新的空间中,再将原来的空间释放掉。将data指针指向新的空间。所以,这个过程是不存在抹去什么数据,或者什么数据还在哪里,是两片空间之间数据的转移。
20 -
延鹏飞
2017-07-21
删除元素后,容量为一半的时候,再进行resize操作。也就是删除第11个元素的时候,需要把第11个元素保存起来,然后resize成容量为10的,size变为11-1,capacity变为20/2。不保存起来的话,返回的是第10个。
112017-07-21
相似问题