vector在push_back以成倍增长可以在均摊后达到O(1)的事件复杂度,相对于增长指定大小的O(n)时间复杂度更好。 为了防止申请内存的浪费,现在使用较多的有2倍与1.5倍的增长方式,而1.5倍的增长方式可以更好的实现对内存的重复利用。 Windows和Linux的扩容底层原理 STL标准没有严格说明我们应该按照哪一种方式进行扩容,因...
了解这些底层实现原理,可以帮助我们更好地选择和使用它们。 ArrayList的扩容机制 ArrayList是基于动态数组实现的,它允许在运行时动态地调整数组的大小。当ArrayList中的元素数量达到数组当前的容量时,ArrayList会创建一个新的数组,其容量是原容量的1.5倍(如果原容量小于10),或者增加50%(如果原容量大于等于10),然后将原数...