Armazenando vetor no arquivo mapeado de memória

Estou tentando armazenar um vetor de elementos arbitrários em um arquivo de memória mapeada (por enquanto estou tentando obter êxito com um vetor de ints, mas ele deve funcionar com o vetor de objetos arbitrários). Encontrei muita documentação para fazê-lo com memória compartilhada, mas não com os arquivos mapeados de memória apropriados. Desde que criei e usei com sucesso as árvores R no arquivo mapeado na memória (como emesse exemplo), Tentei replicar o processo com vetores, mas acho que estou perdendo algum elemento crucial porque não funciona. Aqui está o meu código:

namespace bi = boost::interprocess;
typedef bi::allocator<std::vector<int>, bi::managed_mapped_file::segment_manager> allocator_vec;
std::string vecFile = "/path/to/my/file/vector.dat";
bi::managed_mapped_file file_vec(bi::open_or_create,vecFile.c_str(), 1000);
allocator_vec alloc_vec(file_vec.get_segment_manager());
std::vector<int> * vecptr = file_vec.find_or_construct<std::vector<int> >("myvector")(alloc_vec);

Provavelmente minha última linha está errada, porque "assign_vec" é passado como argumento para o construtor de vetores, o que não o espera (recebo, entre outros, o erro/usr/include/c++/4.8/bits/stl_vector.h:248:7: note: candidate expects 0 arguments, 1 provided) No entanto, não sei como passar o alocador para find_or_construc (), que suponho ser crucial para que o vetor seja criado corretamente no arquivo mapeado de memória. Removendo(alloc_vec) no final da última linha, leva a outro erro que tenho mais problemas para resolver:

error: cannot convert ‘boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family>, boost::interprocess::iset_index>::construct_proxy<std::vector<int> >::type {aka boost::interprocess::ipcdetail::named_proxy<boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family>, boost::interprocess::iset_index>, std::vector<int>, false>}’ to ‘std::vector<int>*’ in initialization
std::vector<int> * vecptr = file_vec.find_or_construct<std::vector<int> >("myvector");

Qualquer ajuda será muito apreciada.`

questionAnswers(1)

yourAnswerToTheQuestion