随机整数的向量不能打印,C ++

时间:2015-10-24 23:24:54

标签: c++ vector

我写了一个简单的程序来生成随机数的向量。我试图在矢量中打印每个元素,但输出看起来不正确。例如,我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

4 个答案:

答案 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);