首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在std::SplitListMap中使用libcds SplitListMap

在std::SplitListMap中使用libcds SplitListMap
EN

Stack Overflow用户
提问于 2013-09-19 07:22:15
回答 1查看 299关注 0票数 0

我尝试创建将std::string映射到std::string的哈希映射,到目前为止,我使用了以下代码:

代码语言:javascript
复制
template<typename TKey, typename TValue>
struct lockfree_hash_map_traits_t
    : public cds::container::split_list::type_traits 
{

    typedef cds::container::michael_list_tag  ordered_list    ;   // what type of ordered list we want to use
    typedef std::hash<TKey>                   hash            ;   // hash functor for the key stored in split-list map

    // Type traits for our MichaelList class
    struct ordered_list_traits: public cds::container::michael_list::type_traits {
        typedef std::less<TKey> less;   // comparer that specifies order of list nodes
    };
};

template<typename TKey, typename TValue>
class lockfree_hash_map_t { 
public:
    typedef
        cds::container::SplitListMap<cds::gc::HP, TKey, TValue, lockfree_hash_map_traits_t<TKey, TValue> > 
        base_hash_map;

// ... some stuff
private:
    base_hash_map _map;
};

它基于libcds文档。但我不确定我是否正确地使用了散列映射..。根据描述SplitListMap底层列表的文章,应该按键哈希排序,但是文档建议使用std::less<TKey>来指定Michael顺序。std::less<std::string>的用法正确吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-22 17:47:07

散列图是通常的做法。哈希函数可以为不同的键生成一个哈希代码。它被称为碰撞。当我们搜索一个键时,我们为该键计算一个散列,在映射中搜索这个散列(通常这个散列只是哈希表中的一个索引),然后将找到的项的键与我们的键进行比较。因此,性病::少是必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18888526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档