首页 > 试题广场 >

对于如下C++程序:int main() { ...

[单选题]
对于如下C++程序:
int main() {
 vector<int> vInt;

 for (int i=0; i<5; ++i)
 {
  vInt.push_back(i);

  cout << vInt.capacity() << " ";
 }

 vector<int> vTmp(vInt);
 cout << vTmp.capacity() << "\n";

 return 0;
}
请问程序输出的是()
  • 1 2 3 4 5 5
  • 1 2 3 4 5 8
  • 1 2 4 4 8 5
  • 1 2 4 4 8 8
 vector是两倍增长的数组, 每当当前空间不足的时候,就进行两倍增长。
开始时容器vInt大小为0, 第一次vInt.push_back(i)时容器大小变为1, 第二次vInt.push_back(i)时容器大小增长为2, 第三次vInt.push_back(i)时容器大小增长为4, 第四次vInt.push_back(i)时因为还有空间不增长, 第五次vInt.push_back(i)增长为8。
vector<int> vTmp(vInt)用vInt初始化vTmp, 因为vInt只有五个元素,vTmp只需要申请5个元素的空间即可
发表于 2019-11-20 15:08:38 回复(0)