Existe uma maneira mais eficiente de definir um std :: vector de um fluxo?

Atualmente, eu defino o valor de umstd::vector<char>&nbsp;de umstd::ostringstream&nbsp;do seguinte modo:

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

Eu estou querendo saber se existe uma maneira mais eficiente de fazer isso com STL em C ++ ou se o método que eu dou aqui é considerado adequado? Eu estaria melhor usandostd::stringstream&nbsp;em vez de?