为什么以下代码将向量大小返回到10?

时间:2018-01-28 16:59:48

标签: c++ vector size

**这里我创建了一个大小为5的向量,然后在其中插入了5个值     但是vector.size()返回10并且输出为0 0 0 0 0 0 1 2 3 4。     为什么会这样?     **

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

 int main()

{   vector < int > k(5);
   for (int i =0 ; i< 5; i++ )
     k.push_back(i);   /*adding 5 values to v*/
   cout << k.size() <<endl;  /*returns 10*/
   for (int i = 0; i < k.size() ; i++)
      cout<< k[i] << '\t'; /* code */
 }

3 个答案:

答案 0 :(得分:1)

下面

vector < int > k(5);

你已经在该载体中保留了5个元素。

调用push_back()会加起来这些。

只需写下

vector < int > k;

并且代码将按预期执行。

答案 1 :(得分:0)

vector < int > k(5);构造带有5个默认构造元素的向量。

之后你push_back 5个元素 - 向vector添加5个元素。

答案 2 :(得分:0)

使用构造函数将大小设置为5初始化向量时,它已经为内容保留了5个内存地址,尽管它们不包含任何内容。根据定义,push_back()会将向量的大小增加一,并在后面添加元素,因此,您添加的第一个元素将位于k[5]上,而不是k[0]。这可以通过将向量声明为vector<int> k;(没有大小)或将此k.push_back(i);更改为此k[i] = i;来修复。

干杯!