Как говорится в моем заголовке, у меня проблема с выходом за пределы допустимого диапазона моего кода на C ++. Основой c является то, что я делаю вектор для колоды из 52 карт. После чего я рандомизирую порядок карточек.
Когда я go распечатываю карты одну за другой в терминале, я получаю ошибку вне диапазона для расположения памяти. Вывод дает мне первую карту, но затем ломается.
Из проверки ошибок я знаю, что размер моей колоды равен 1, но я думал, что мой pu sh при создании колоды увеличит размер колоды до 52.
Есть ли что-то, что я есть отсутствует? Любая помощь приветствуется.
#include <iostream>
#include <chrono>
#include <random>
#include <vector>
int main() {
srand(time(0));
std::vector <std::string> Deck[52];
CreateDeck(Deck);
ShuffleDeck(Deck);
ShowDeck(Deck);
}
void ShowDeck(std::vector <std::string> Deck[52]) {
for (size_t i = 0; i < 52; i++) {
// Microsoft C++ exception: std::out_of_range at memory location 0x004FF718.
std::cout << Deck->at(i) << ",";
if ((i + 1) % 13 == 0) {
std::cout << "\n" << std::endl;
}
}
}
void ShuffleDeck(std::vector <std::string> Deck[52]) {
//shuffle deck to a randomize order
unsigned seed = rand() % 100;
std::shuffle(Deck, Deck + 52, std::default_random_engine(seed));
std::cout << " Shuffling Deck......." << std::endl;
}
void CreateDeck(std::vector <std::string> Deck[52])
{
//using the arrays below contruct a 52 playing card deck
std::string suit[4] = { "S","C","D","H" };
std::string value[13] = { "A","2","3","4","5","6","7","8","9","10","J","Q","K" };
int x = 0;
for (size_t j = 0; j < 4; j++)
{
for (size_t i = 0; i < 13; i++)
{
Deck[x].push_back("[" + value[i] + suit[j] + "]");
x++;
}
}
}