c-为什么向量的容量和大小不同?

这个问题已经在这里有了答案:            >            size vs capacity of a vector?                                    6个
以下是向量程序,并针对c 11模式下的容量给出了不同的结果.

#include<iostream>
#include<vector>
using namespace std;

int main(){
vector<int>a ={1,2,3};
cout<<"vector a size :"<<a.size()<<endl;
cout<<"vector a capacity :"<<a.capacity()<<endl<<endl;;

vector<int>b ;
b.push_back(1);
b.push_back(2);
b.push_back(3);
cout<<"vector b size :"<<b.size()<<endl;
cout<<"vector b capacity :"<<b.capacity()<<endl;
return 0;
}

输出值
向量大小:3
向量容量:3
向量b大小:3
向量b容量:4

为什么此程序为a和b的容量给出不同的值,而同时具有相同数量的值,并且大小与容量有何不同?

最佳答案
原因与向量的扩展算法的本质有关.
初始化向量时,施加的额外容量数为0.
在第i次需要扩展时,向量将其包含的内容复制到新的向量,其容量是其当前大小的两倍.
此方法使整个大小更改数组的想法非常有效,因为在摊销时间(即N次操作的平均时间)中,我们得到O(1)插入复杂度.
您可以看到在向第一个向量再添加一个整数之后,容量为6.http://coliru.stacked-crooked.com/a/f084820652f025b8

转载注明原文:c-为什么向量的容量和大小不同? - 代码日志