**这里我创建了一个大小为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 */
}
答案 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;
来修复。
干杯!