【发布时间】:2016-11-23 18:15:36
【问题描述】:
下面是vector的程序,给出了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
向量 a 容量:3
矢量 b 大小:3
矢量 b 容量:4
为什么这个程序为 a 和 b 的容量提供不同的值,而两者的值数量相同,大小与容量有何不同?
【问题讨论】:
-
但我认为这是我问题的部分答案。因为为什么向量 a 和 b 的容量在同一台 PC 和同一编译器上会变得不同。
-
@GIRISHkuniyal 为什么不一样了?初始化不同。
-
@GIRISHkuniyal 在第一种情况下,向量知道您总共要插入多少个元素。可能您再也不会插入元素(例如:如果您已将
a声明为const),因此无需分配额外的元素。在第二种情况下,每个push_back调用都假定会有更多调用,因此向量是保守的,分配更多以防万一。
标签: c++ vector data-structures