为什么以下代码返回的向量大小为 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;
.
来解决
干杯!
**我在这里创建了一个大小为 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;
.
干杯!