here's another error It's still ther eafter fixing all end()-> to back()., and I think it's what caused your original segfault.
You create a Vertices called "vtcs_position" at line 112, which is uninitialized (by the way, this is already a major red flag: you should always initialize your objects. Write constructors for all those classes and use them)
You place the address of that, uninitialized, vtcs_position in the _owner pointers of each vertex in its own vtcs_position._vertices
Then you place a *copy* of vtcs_position inside data._vertices and populate the _owner pointer of that copy
The original vtcs_position that's sitting in main function still has an uninitialized _owner containing garbage, and so data._vertices[0]._vertices[0]._owner is still pointing at main's vtcs_position, and data._vertices[0]._vertices[0]._owner._owner is garbage
So inside setValue, you call _owner->passData, that "_owner" points at main's vtcs_position, then in that passData you call _owner->updateData, that _owner is a garbage pointer. And then in updateData, that _owner is now the "this" pointer and your loop attempts to read "_default_vertex_count" (which is also uninitialized btw) off a garbage "this" , at which point it crashes.
This explains your "fault addr 0x18": it your garbage value happened to be zero, and sizeof(vector) on your system is 12 bytes, as appropriate for 32-bit targets, then _default_vertex_count is at address 0x18.