¿Qué es exactamente streambuf? ¿Como lo uso

Estoy tratando de aprender un poco más sobre cómo funcionan las transmisiones de E / S en C ++, y estoy realmente confundido sobre cuándo usar qué.

Qué es exactamente unastreambuf?
Cuando uso unastreambuf, en comparación con unastring, unistream o unvector? (Ya sé los últimos tres, pero no cómostreambuf se compara con ellos, si es que lo hace).