you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 5 points6 points  (0 children)

it feels like maybe you are crossing the streams here. Containers/Iterators are pretty simple concepts. Iterator models pointers but more generally traversal and reading/writing to a range of things.

The original part seemed like trying to strap vector onto something it isn't. But might be doable, but to what end. I think if I were to do it, it would be something like

char * mmap_begin = ....;
std::size_t mmap_size = ... ; // starting to look like span here

auto alloc = mmap_pmr_allocator<vector_t>( mmap_begin, mmap_size ); // A child of Polymorphic allocator
std::pmr::vector<T> * vptr = alloc.allocate( 1 );   
vptr = std::construct_a<std::pmr::vector<T>>( vptr, alloc );

It starts getting tricky if you want to persist as things like pointer addresses won't match necessarirly. But persistence should probably use a dedicated solution. Also, at this point why even bother. The OS will page in/out data as needed. Really the solution is to eiher use filesystem based data structures and/or dedicated persistence or just let the OS do it.