使用boost multi_index_container来保留插入顺序

rme*_*dor 5 c++ boost multimap multi-index

我最初开始使用a std::multimap来存储具有相同键的许多值,但后来我发现它不会保留具有相同键的值之间的插入顺序. 这个答案声称它可以完成boost::multi_index::multi_index_container,但没有举例.通过文档查看,没有这种用法的例子,我无法对你应该如何使用这个东西做出正面或反面.我开始期待来自较少使用的boost库的文档很差,但这需要蛋糕.任何人都可以指向一个教程或示例,显示它使用我想要的方式,或者甚至可能自己提供一个示例?

Kir*_*sky 7

您可以通过使用boost::multi_index两个索引来实现此目的:( ordered_non_unique允许具有相同键的值)和random_access(将保持插入顺序).

struct some {
  long key;
  int data;
  int more_data;
  // etc.  
};

typedef multi_index_container<
  some, 
  indexed_by<    
    random_access<>,  // keep insertion order
    ordered_non_unique< member<some, long, &some::key> >
  > 
> some_mic_t;
Run Code Online (Sandbox Code Playgroud)