Почему мое случайное поколение чисел вводит все нули?

0

У меня есть шаблон функции, который предполагает взять вектор и создать в нем случайные числа. Однако, когда я печатаю весь вектор, все его нули. Однако этот метод работает для массивов.

код:

#include <vector>

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



 void genRand(std::vector<T> data, int size)
    {
        genRand(&data[0], size);
    }



};
  • 1
    передать по ссылке?
  • 0
    Согласитесь со ссылкой, но &data[0] не приводит к типу T* что означает, что память не выделяется автоматически в vector<T> при выполнении data[i] = value - так что я бы ожидал обрезания памяти здесь из-за написания за пределами границы.
Теги:
templates
vector
random

1 ответ

4
Лучший ответ

Вы берете вектор по значению, поэтому аргумент не будет изменен. Возьмите это по ссылке:

 void genRand(std::vector<T>& data, int size)
 //                         ^

Ещё вопросы

Сообщество Overcoder
Наверх
Меню