<div><div>typedef managed_shared_memory::allocator&lt;char&gt;::type &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;char_allocator;</div><div>typedef basic_string&lt;char, std::char_traits&lt;char&gt;, char_allocator&gt;shm_string;</div><div><br></div><div>struct quote</div><div>{</div><div>public:</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>int market;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>int kind;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>shm_string seccode;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>shm_string secname;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>float price;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>float zf;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>quote(int market_, int kind_, const char* seccode_, const char_allocator&amp; a, const char* secname_, const char_allocator&amp; b, float price_, float zf_):</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>market(market_),kind(kind_), seccode(seccode_, a), secname(secname_, b), price(price_), zf(zf_)</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>{}</div><div>};</div><div><br></div><div><br></div><div>typedef boost::multi_index::composite_key&lt;quote,&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>BOOST_MULTI_INDEX_MEMBER(quote, int, market),</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>BOOST_MULTI_INDEX_MEMBER(quote, shm_string, seccode)</div><div>&gt;comp_key_search;</div><div>typedef boost::multi_index::composite_key_compare&lt;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>std::greater&lt;int&gt;,</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>std::greater&lt;shm_string&gt;</div><div>&gt;comp_key_compare_search;</div><div><br></div><div><br></div><div>typedef boost::multi_index::composite_key&lt;quote,&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>BOOST_MULTI_INDEX_MEMBER(quote, float, price),</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>BOOST_MULTI_INDEX_MEMBER(quote, int, market),</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>BOOST_MULTI_INDEX_MEMBER(quote, shm_string, seccode)</div><div>&gt;comp_key_sortbyprice;</div><div>typedef boost::multi_index::composite_key_compare&lt;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>std::greater&lt;float&gt;,</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>std::greater&lt;int&gt;,</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>std::greater&lt;shm_string&gt;</div><div>&gt;comp_key_compare_sortbyprice;</div><div><br></div><div><br></div><div><br></div><div>typedef boost::multi_index::multi_index_container&lt;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>quote,</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>boost::multi_index::indexed_by&lt;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>boost::multi_index::ordered_non_unique&lt;comp_key_search, comp_key_compare_search&gt;,</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>boost::multi_index::ordered_non_unique&lt;comp_key_sortbyprice, comp_key_compare_sortbyprice&gt;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>&gt;,</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>managed_shared_memory::allocator&lt;quote&gt;::type</div><div>&gt;quote_mic;</div><div><br></div><div><br></div><div>int main()</div><div>{</div><div>/*</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> struct shm_remove</div><div>&nbsp; &nbsp;{</div><div>&nbsp; &nbsp; &nbsp; shm_remove() { shared_memory_object::remove("MySharedMemory"); }</div><div>&nbsp; &nbsp; &nbsp; ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }</div><div>&nbsp; &nbsp;} remover;</div><div>*/</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> managed_shared_memory segment(open_only,"MySharedMemory");</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>quote_mic *quotes = segment.find_or_construct&lt;quote_mic&gt;</div><div>&nbsp; &nbsp; &nbsp; ("My MultiIndex Container") &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Container's name in shared memory</div><div>&nbsp; &nbsp; &nbsp; ( quote_mic::ctor_args_list(),</div><div>&nbsp; &nbsp; &nbsp; //, segment.get_allocator&lt;quote&gt;()); &nbsp;//Ctor parameters</div><div><span class="Apple-tab-span" style="white-space:pre">	</span> &nbsp;quote_mic::allocator_type(segment.get_segment_manager()));</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>quote_mic::nth_index&lt;0&gt;::type&amp; idx_search = quotes-&gt;get&lt;0&gt;();</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>quote_mic::nth_index&lt;1&gt;::type&amp; idx_sortbyprice = quotes-&gt;get&lt;1&gt;();</div><div><span class="Apple-tab-span" style="white-space:pre">	</span></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>int count = 0;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>char_allocator ca1(segment.get_allocator&lt;char&gt;());</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>// ��ѯ��Ʊʵʱ����</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>shm_string seccode("600000", ca1);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>count = idx_search.count(boost::tuples::make_tuple(1, seccode));</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>quote_mic::nth_index&lt;0&gt;::type::iterator it = idx_search.find(boost::tuples::make_tuple(1, seccode));</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>for (int i=0; i&lt;count; i++)</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>std::cout &lt;&lt; it-&gt;seccode &lt;&lt; std::endl;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>it++;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div><br></div><div><br></div><div><br></div><div><br></div><div><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre">	</span>std::vector&lt;quote&gt; result;</font></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>BOOST_FOREACH(const quote&amp; q, idx_sortbyprice)</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>{</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>int kind = q.kind;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>if (kind == 1 || kind == 11)</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>{</div><div>//<span class="Apple-tab-span" style="white-space:pre">			</span>std::cout &lt;&lt; "�г�" &lt;&lt; q.market &lt;&lt; ",���" &lt;&lt; q.kind &lt;&lt; ", " &lt;&lt; q.secname &lt;&lt; ",���¼�" &lt;&lt; q.price &lt;&lt; std::endl;</div><div><br></div><div><font color="#ff0000"><span class="Apple-tab-span" style="white-space:pre">			</span>result.push_back(q); &nbsp;this statement will compile error, why? how to write?</font></div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>else</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>{</div><div>//<span class="Apple-tab-span" style="white-space: pre; ">			</span>std::cout &lt;&lt; "���ˣ��г�" &lt;&lt; q.market &lt;&lt; ",���" &lt;&lt; q.kind &lt;&lt; ", " &lt;&lt; q.secname &lt;&lt; ",���¼�" &lt;&lt; q.price &lt;&lt; std::endl;</div><div><span class="Apple-tab-span" style="white-space:pre">		</span>}</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>}</div><div><br></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">	</span>return 0;</div><div>}</div></div><div><br></div>