C++中vector容器为什么扩容时按照2倍或者1.5倍进行扩容

  • Post author:
  • Post category:其他




扩容机制

首先在VS2013底下,vector的扩容操作是每次扩容*1.5;在GCC环境下是2倍。

  • GCC下的扩容方式是以二倍形式扩容。

    在这里插入图片描述
  • VS2013下是以1.5倍进行扩容

    在这里插入图片描述

    所以可能会有疑问:
  • 问题一:为什么非要以倍数的形式增长,而不是以个数的形式增长。
  • 问题二:为什么每次增长是1.5倍或者2倍形式,而不是3倍或者4倍形式增长。



详解问题一



倍数方式空间拷贝数据次数

假设总共有n个元素,以m倍的形式增长。(比如现在举例n=100, m=2),所以,vector的push_back的操作次数可以是logmN,



版权声明:本文为weixin_43796685原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。