serialização de vetores

Eu estou tentando serializar binário os dados do vetor. Neste exemplo abaixo eu serializo para uma string e, em seguida, desserializo de volta para um vetor, mas não obtenho os mesmos dados com os quais comecei. Por que isso acontece?

vector<size_t> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

string s((char*)(&v[0]), 3 * sizeof(size_t));

vector<size_t> w(3);
strncpy((char*)(&w[0]), s.c_str(), 3 * sizeof(size_t));

for (size_t i = 0; i < w.size(); ++i) {
    cout << w[i] << endl;
}

Espero obter o resultado

1  
2
3

mas em vez disso obter a saída

1
0
0

(emgcc-4.5.1)

questionAnswers(4)

yourAnswerToTheQuestion