6

我最初开始使用 astd::multimap来存储许多具有相同键的值,但后来我发现它不会保留具有相同键的值之间的插入顺序。 这个答案声称它可以用 来完成boost::multi_index::multi_index_container,但没有给出例子。浏览文档,没有这种用法的例子,我无法确定你应该如何使用这个东西。我已经开始期待使用较少的 boost 库的文档很差,但这很容易。任何人都可以向我指出一个教程或示例,显示它以我想要的方式使用,或者甚至自己提供一个示例吗?

4

2 回答 2

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;
于 2010-07-13T20:03:37.930 回答
-1

一个怎么样

map<int, vector<string> >

或者

map<int, list<string> >

@Kirill:很好的答案。我怀疑 Boost 的 random_access 可能会很慢,因为它会强制所有键的所有字符串都保存在一个连续的结构中。而提问者只是希望在每个键的映射值集中保留顺序。

于 2010-07-14T00:01:16.513 回答