Serializar y deserializar vectores en binario

Tengo problemas para intentar serializar un vector (std :: vector) en un formato binario y luego deserializarlo correctamente y poder leer los datos. Esta es la primera vez que uso un formato binario (estaba usando ASCII pero ahora es demasiado difícil de usar), así que empiezo de manera simple con solo un vector de entradas.

Cada vez que leo los datos, el vector siempre tiene la longitud correcta, pero los datos son 0, indefinidos o aleatorios.

class Example  
{  
public:  
    std::vector<int> val;  
};

ESCRIBIR:

Example example = Example();  
example.val.push_back(10);  
size_t size = sizeof BinaryExample + (sizeof(int) * example.val.size()); 

std::fstream file ("Levels/example.sld", std::ios::out | std::ios::binary);

if (file.is_open())  
{  
    file.seekg(0);  
    file.write((char*)&example, size);  
    file.close();  
}

LEER:

BinaryExample example = BinaryExample();

std::ifstream::pos_type size;  
std::ifstream file ("Levels/example.sld", std::ios::in | std::ios::binary | std::ios::ate);

if (file.is_open())  
{   
    size = file.tellg();

    file.seekg(0, std::ios::beg);
    file.read((char*)&example, size);
    file.close();
}

¿Alguien sabe lo que estoy haciendo mal o qué hacer o puede señalarme en la dirección que debo hacer?

Respuestas a la pregunta(4)

Su respuesta a la pregunta