初始化向量时这两个数字是多少?

时间:2014-03-21 14:22:36

标签: c++ vector

这是什么意思?

vector<int> scores(10, 0);

评论说它将所有10个元素初始化为0.这是否意味着向量的大小为10,然后降为0?

另外,push_back

scores.push_back(0);

这会增加更多内存吗?

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

int main()
{

cout << "Creating a 10 element vector to hold scores.\n";
//initialize all 10 elements to 0
vector<int> scores(10, 0); 
cout << "Vector size is :" << scores.size() << endl;
cout << "Vector capacity is:" << scores.capacity() << endl;

cout << "Adding a score.\n";
//memory is reallocated to accommodate growth
scores.push_back(0); 
cout << "Vector size is :" << scores.size() << endl;
cout << "Vector capacity is:" << scores.capacity() << endl;

2 个答案:

答案 0 :(得分:1)

constructor创建一个包含十个元素的向量,并将每个元素设置为零。

对于push_back调用,可能会导致分配更多内存。 (有关何时发生,请参阅链接参考。)

答案 1 :(得分:0)

  

这是否意味着向量的大小为10,然后降为0?

不,这意味着大小为10,并且每个元素都使用值0初始化。

  

这会增加更多内存吗?

它正在增加向量的大小。如果有足够的容量(即如果已经为新元素分配了足够的内存),它将只使用该内存。否则,将分配更大的内存块,并将元素移入其中,以便可以将新元素放在它们之后。