Как указано в заголовке, у меня возникли проблемы с добавлением случайных чисел в качестве элементов в вектор целочисленного типа. Я включил библиотеки времени и stdlib для совместной работы с векторной библиотекой.Как добавить элементы случайным образом в вектор с помощью push_back
Моя попытка (с помощью классов) до сих пор:
Перейти в векторе по ссылке в функцию, которая добавляет случайные элементы в вектор. Кроме того, передавая ссылку на переменную, которую я хочу обновить, и используя указатель, объявленный в классе и определенный в конструкторе, для хранения адреса памяти переменной (той же, на которую ссылались предыдущие строки).
class PlayerHand
{
public:
playerHand();
void populateHand(vector<int>&, int&)
private:
vector<int> &refVector;
int *pPointer;
int giveCard;
};
playerHand::playerHand()
{
srand((time(NULL)));
giveCard = (rand() % 14) + 1;
pPointer = &giveCard;
}
void playerHand::populateHand(vector<int> &refVector, int &refGiveCard)
{ for(int i = 0; i <= 8; i++)
{
refVector.push_back(*pPointer); //dereference thepointer to store value in giveCard
srand(time(0));
refGiveCard = (rand() %14) + 1; /*Here is where I'm trying to update the reference
so before the next loop, the reference should have
a new updated value*/
cout << refVector.at(i) << " ";
}
}
Итак, после компиляции кода элементы в векторе имеют одинаковый номер и не отличаются друг от друга. Какую ошибку в коде я делаю?
все они равны одному и тому же 'givecard' .. чего вы пытаетесь достичь здесь ..? –
Вы используете 'refVector' как имя элемента данных и как имя локальной переменной в функции-члене. Не делай этого. – jogojapan
Как вы называете 'populateHand'? – jogojapan