C++ std::unordered_map使用及如何自定义键的类型

本文介绍了C++中std::unordered_map的使用,包括所需的头文件、基本定义、构造函数、插入、查找和遍历操作。特别地,文章探讨了如何为unordered_map自定义键类型,并提供了一个相关示例。
摘要由CSDN通过智能技术生成

C++ std::unordered_map使用及如何自定义键的类型

  • 头文件:<unordered_map>

  • 定义:

      template<class _Key, class _Tp,
    	   class _Hash = hash<_Key>,
    	   class _Pred = std::equal_to<_Key>,
    	   class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
        class unordered_map{...}
    
    _Hash = hash<_Key> 由于std::unordered_map 使用哈希算法,将值存储到桶中,如果自定义键的类型,需要实现对应方法。如果使用基本类型则不用提供
    _Pred = std::equal_to<_Key> 由于hash算法可能会遇到hash值相同,但内容不同的情况,提供函数来区分
    _Alloc = std::allocator<std::pair<const _Key, _Tp> > >则是内存管理使用,一般来说使用默认的内存管理即可
    
  • 公共定义的类型

    /// Public typedefs.
    typedef typename _Hashtable::key_type	key_type;  //键类型
    typedef typename _Hashtable::value_type	value_type; // std::Pair<const _Key k, _Tp t>
    typedef typename _Hashtable::mapped_type	mapped_type;//值的类型
    typedef typename _Hashtable::hasher	hasher;
    typedef typename _Hashtable::key_equal	key_equal;
    typedef typename _Hashtable::allocator_type allocator_type;
    
  • 构造函数

    void testCreateMap(){
        using Group = std::unordered_map<int,std::strin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值