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