用 Boost.Bimap 替换向量和哈希表
我希望用 boost 替换
。vector
和 boost::unordered_map
将字符串映射到前者的索引: :bimap
我应该使用什么bimap
实例化?到目前为止,我已经想出了
typedef bimap<
unordered_set_of<size_t>,
vector_of<string>
> StringMap;
,但我不确定现在是否已经颠倒了集合类型。另外,我想知道是否应该更改 关系类型的集合。 vector_of_relation
是我的最佳选择,还是 set_of_relation
,或者只是使用默认值?
I'm looking to replace a vector<string>
and a boost::unordered_map<string, size_t>
mapping string to indices in the former with a boost::bimap
.
What instantiation of bimap
should I use? So far, I've come up with
typedef bimap<
unordered_set_of<size_t>,
vector_of<string>
> StringMap;
but I'm not sure if I've reversed the collection types now. Also, I wonder if I should change the collection of relations type. Would a vector_of_relation
be my best choice, or a set_of_relation
, or just go with the default?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要获得 size_t 和 std::string 之间的 bimap,其中您有〜常数(取决于散列和任何潜在冲突的成本),您需要使用 unordered_set_of:
returns:
unordered_set 是 set 的增强版本,它使用哈希表而不是用于存储元素的树,请参阅 Boost Unordered 文档。
查看 Bimap 示例,我们有:
To get a bimap between size_t and std::string where you have ~constant (up to the cost of hashing and any potential clashes) you need to use unordered_set_of:
returns:
The unordered_set is a boost version of set which uses hash tables instead of trees to store the elements, see Boost Unordered docs.
Looking at the comments from one of the bimap examples at Bimap example, we have: