|
Boost Users : |
Subject: Re: [Boost-users] Boost interprocess vector, creating multiple vector pointers
From: Jacques C. Richard (richard_at_[hidden])
Date: 2012-01-14 22:02:11
While on the subject of vectors, can one do derivatives, like curl, divergence of a vector field, etc., & vector cross-product, etc., as in Blitz++? I ask since there's a relationship between multi_array & blitz++ according to
http://www.boost.org/doc/libs/1_48_0/libs/multi_array/doc/user.html
Todd Veldhuizen wrote Blitz++, which inspired some aspects of this design. In addition, he supplied feedback on the design and implementation of the library.
On Dec 29, 2011, at 3:48 AM, Ion Gaztañaga wrote:
> El 28/12/2011 9:30, Prasanth Madhavan escribió:
>> I want to insert a shared vector into a shared map using the following
>> code: managed_shared_memory segment(create_only ,"MySharedMemory"
>> ,65536);
>> typedef allocator<int, managed_shared_memory::segment_manager>
>> vecAllocator;typedef vector<int, vecAllocator> vec;typedef
>> std::pair<int, vec*> ValueType;typedef allocator<ValueType,
>> managed_shared_memory::segment_manager> ShmemAllocator;typedef
>> multimap<int, vec*, std::less<int>, ShmemAllocator> MyMap;
>> ShmemAllocator alloc_inst (segment.get_segment_manager());vecAllocator
>> vectorallocator (segment.get_segment_manager());
>>
>> MyMap *mymap = segment.construct<MyMap>("MyMap")(std::less<int>(),alloc_inst);vec
>> *myvec = segment.construct<vec>("myvec")(vectorallocator);vec *myvec1
>> = segment.construct<vec>("myvec1")(vectorallocator);
>> myvec->push_back(10);myvec->push_back(9);myvec->push_back(8);myvec1->push_back(987);myvec1->push_back(123);myvec1->push_back(456);
>>
>> for(int i = 0; i< 6; ++i){ for(int j = 0; j<6; j++)
>> mymap->insert(std::pair<int, vec*>(i, myvec));}for(int i = 0; i< 6;
>> ++i){ for(int j = 0; j<6; j++) mymap->insert(std::pair<int,
>> vec*>(i, myvec1));}the code works.. but what i want to do is construct
>> a vector without a name. that is do something like this
>> vec *myvec = segment.construct<vec>(vectorallocator);vec *myvec1 =
>> segment.construct<vec>(vectorallocator);so that if i put it inside a
>> loop and there is no problem with naming them differently every loop.
>> Is there a way to do so? Or atleast is there an automatic way to name
>> them differently every loop?
>
> You should use anonymous allocation:
>
>
> http://www.boost.org/doc/libs/1_48_0/doc/html/interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_memory_segment_features.anonymous
>
> best,
>
> Ion
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net