C 语言的数组内存是线性连续的,所以如果操作数组的一些操作可能移动内存中的元素。比如删除或者添加到第零个索引 都要移动后面的元素。效果图:
iOS 的数组是类似双端队列的环形结构。但是两端删除增加的效率比较快相比中间某个索引。因为中间删除添加会在内存中移动部分元素。
删除添加元素到数组是没有改变他的内存大小的,之前占用的空间还在只是元素对象销毁了,如果内存不够用每次重新创建原来1.625倍大小的size,为什么是1.625倍大小而不是两倍大小看具体解释:https://github.com/facebook/folly/blob/master/folly/docs/FBVector.md#memory-handling
网友评论