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

Why the following code is returning vector size to be 10?

**我在这里创建了一个大小为 5 的向量,然后在其中插入了 5 个值 但是 vector.size() returns 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 */
 }

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

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

这里

vector < int > k(5);

您已经在该向量中保留了 5 个元素。

调用 push_back() 加起来就是这些。

随便写

vector < int > k;

并且代码将按您预期的方式工作。

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

来解决

干杯!