I've written a class that looks like
class Mesh {
    public:
        vector<Vertex> vs;
}
where Vertex is
class Vertex {
    public:
        const double x, y, z;
}
I have a function which loads a Mesh from a file:
shared_ptr<Mesh> load_mesh(string filename) {
    //....
    vector<Vertex> vs;
    Vertex v(1, 2, 3);
    vs.push_back(v);
    return shared_ptr<Mesh>(Mesh(vs));
}
My questions are concerning the scope of the Vertex and the vector.
Will one or both go out of scope?
Which (if any) of the alternatives are preferred?
class Mesh1 {
    public:
        vector<shared_ptr<Vertex>> vs;
}
class Mesh2 {
    public:
        shared_ptr<vector<Vertex>> vs;
}
class Mesh3 {
    public:
        shared_ptr<vector<shared_ptr<Vertex>>> vs;
}
Or is there a better / easier way of handling this?
 
     
    