@howdyhowdyhowdy,
You do realise that, with your current parameters, you want 10 distinct random numbers ... between 1 and 10 inclusive? So they must be the numbers 1-10 in some order.
The only distinction between your selections will be the order in which they occur - in which case you should indeed use std::shuffle. By contrast, std::set will automatically sort them into increasing order, although you could put them in a vector after checking that they aren't yet in your std::set.
Philosophically, is that "without simply calling library function that is perfect for this purpose" or "without using the algorithm that library function probably does use"?
The shuffling takes a deck of (unique) cards and shuffles them into random order.
Think of lottery. There are unique, numbered balls. One ball is taken randomly and stored elsewhere. After the ball is taken, there are one less ball in the pot. Hence same number cannot be selected twice.
While shuffling swaps cards, it keeps all cards in the deck.
Selecting a ball in lottery not only points at a ball, but also removes it from the pot.
Both produce a random sequence, but with different method.