1 | #include <boost/interprocess/managed_shared_memory.hpp>
|
---|
2 | #include <boost/multi_index_container.hpp>
|
---|
3 | #include <boost/multi_index/composite_key.hpp>
|
---|
4 | #include <boost/multi_index/hashed_index.hpp>
|
---|
5 | #include <boost/multi_index/sequenced_index.hpp>
|
---|
6 | #include <boost/multi_index/member.hpp>
|
---|
7 |
|
---|
8 | using namespace boost::multi_index;
|
---|
9 | using namespace boost::interprocess;
|
---|
10 |
|
---|
11 | typedef struct element {
|
---|
12 | int a;
|
---|
13 | int b;
|
---|
14 | int c;
|
---|
15 | int d;
|
---|
16 | } element_t;
|
---|
17 |
|
---|
18 | struct myIndex :
|
---|
19 | indexed_by<
|
---|
20 | hashed_unique<
|
---|
21 | composite_key<element,
|
---|
22 | member<element, int, &element::a>,
|
---|
23 | member<element, int, &element::b>,
|
---|
24 | member<element, int, &element::c> > >,
|
---|
25 | ordered_non_unique<
|
---|
26 | composite_key<element,
|
---|
27 | member<element, int, &element::b>,
|
---|
28 | member<element, int, &element::c> > >
|
---|
29 | > {};
|
---|
30 |
|
---|
31 | typedef multi_index_container<element,
|
---|
32 | myIndex,
|
---|
33 | allocator<element, managed_shared_memory::segment_manager>
|
---|
34 | > myMap;
|
---|
35 |
|
---|
36 | int main(int argc, char **argv)
|
---|
37 | {
|
---|
38 | element elem;
|
---|
39 | managed_shared_memory* segment;
|
---|
40 | segment = new managed_shared_memory(open_or_create, "test", 4096);
|
---|
41 | myMap *testMap = segment->find_or_construct<myMap>("test")(myMap::ctor_args_list(), segment->get_segment_manager());
|
---|
42 | testMap->insert(elem);
|
---|
43 | return 0;
|
---|
44 | }
|
---|