okay, that's fine.
Here is a first pass at the shuffle to answer the original question.
#include <vector>
#include <algorithm> // pre-invented wheels
#include <random>
#include <chrono>
std::vector<int> indices =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // an ordered int container so we have some data to manipulate
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52
};
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); // set up
std::default_random_engine rng(seed); // simular to srand(0)
std::shuffle(indices.begin(), indices.end(), rng); // standard library container shuffle (entire deck is mixed up in one line of code)
for (int i = 0; i < 52; ++i) deck.shuffled_state[i] = indices[i]; // demonstrating copy vector content to regular array (optional)