Come da titolo: che differenze ci sono essenzialmente tra unsigned, size_t e size_type?

Quando è più corretto preferire l'utilizzo di uno piuttosto che di un altro?

Grazie.