函数模板不能正确生成随机数

时间:2014-10-18 09:30:12

标签: c++ templates random vector

我有一个函数模板,它应该采用向量并在其中生成随机数。但是,当我打印整个矢量时,它全部为零。

代码:

const  int smallSize = 20;

// declare small vector
vector <int> smallVector(smallSize);

genRand(smallVector, smallSize);

// make copy of small vector 
vector<int> copySmallVector = smallVector;

// function template for generating random numbers
template<class T, class B>void genRand(T data, B size)
{
    for (B i = 0; i < size; i++)
    {
        data[i] = (1 + rand() % size);
    }
}

1 个答案:

答案 0 :(得分:4)

您正在向量的副本中生成随机数,然后在函数返回时将其丢弃。

变化:

template<class T, class B>void genRand(T data, B size)

为:

template<class T, class B>void genRand(T &data, B size)
                                       ^^^^^^^