You can implement it both ways.
To add 10 later, you can change your total_hand() function to become:
int total_hand
{
int count = 0;
int num_of_aces = 0;
for (int i = 0; i < hand.size(); i++)
{
card c = hand[i];
if (c.get_value() == 11){
num_of_aces += 1;
count += 1;
}
else
count = count + c.get_value();
}
for (int i = 0; i < num_of_aces; i++){
if (count + 10 <= 21)
count += 10;
return count;
}
To subtract 10 later (as your intuition suggests), you can do the following:
int total_hand
{
int count = 0;
int num_of_aces = 0;
for (int i = 0; i < hand.size(); i++)
{
card c = hand[i];
if (c.get_value() == 11)
num_of_aces += 1;
count = count + c.get_value();
}
while(count > 21 && num_of_aces--)
count -=10;
return count;
}