¿Hay una manera más eficiente de establecer un std :: vector desde un flujo?

Actualmente, establezco el valor de unstd::vector<char>&nbsp;desde unstd::ostringstream&nbsp;como sigue:

void
foo(std::vector<char> &data, std::stringstream &stream) {
  data = std::vector<char>(stream.str().begin(), stream.str().end());
}

Me pregunto si hay una forma más eficiente de hacer esto con STL en C ++ o si el método que presento aquí se considera apropiado. ¿Estaría mejor usandostd::stringstream&nbsp;¿en lugar?