我写了一个简单的程序来生成随机数的向量。我试图在矢量中打印每个元素,但输出看起来不正确。例如,我push_back 5个数字,但vector.size()给出10 ...我不知道为什么。请帮忙。
#include <iostream>
#include <vector>
#include <time.h>
#include <cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
vector<int> arr(5);
int i, val;
for (i=0; i<5; i++)
{
val = rand()%30;
cout << "value " << i << " is " << val << endl;
arr.push_back(val);
}
for (i=0; i<arr.size() ; i++){
cout << arr[i] << " " << arr.size() << endl;
}
return 0;
}
OUTPUT:
value 0 is 2
value 1 is 13
value 2 is 9
value 3 is 28
value 4 is 27
0 10
0 10
0 10
0 10
0 10
2 10
13 10
9 10
28 10
27 10
答案 0 :(得分:4)
排队
arr.push_back(val);
您已经分配了5个条目。您无需推回新元素即可访问它们。例如:
vector<int> arr(5);
有效且不会崩溃。
现在,如果您执行其他vector<int> arr(5);
arr[1];
,则会扩展现有的向量,因此会更改其大小。
答案 1 :(得分:3)
classpath 'com.android.databinding:dataBinder:1.0-rc4'
这会创建一个包含5个元素的向量。
vector<int> arr(5);
此将一个新元素附加到向量。所以第一次调用时,向量现在将包含6个元素。
答案 2 :(得分:2)
您正在使用的vector constructor创建一个已存在5个值(等于0)的向量。如果你想让向量为5个元素分配空间(正如我假设 - 你的计划)。您可以使用默认构造函数创建向量,然后使用reserve方法。
答案 3 :(得分:1)
而不是
vector<int> arr(5);
应该阅读
vector<int> arr;
arr.reserve(5);