STL之unordered_map容器

unordered_map 是关联容器,含有带唯一键的键-值 pair 。搜索、插入和元素移除拥有平均常数时间复杂度。

元素在内部不以任何特定顺序排序,而是组织进桶中。元素放进哪个桶完全依赖于其键的哈希。这允许对单独元素的快速访问,因为一旦计算哈希,则它准确指代元素所放进的桶。

std::unordered_map 满足容器 (Container) 、具分配器容器 (AllocatorAwareContainer) 、无序关联容器 (UnorderedAssociativeContainer) 的要求。

用于构造:哈希表
迭代器
begin,cbegin:返回指向容器第一个元素的迭代器
end,cend:返回指向容器尾端的迭代器
容量
empty:检查容器是否为空
size:返回容纳的元素数
max_size:返回可容纳的最大元素数
修改器
clear:清除内容
insert:插入元素或结点
insert_or_assign:插入元素,或若关键已存在则赋值给当前元素
emplace:原位构造元素
emplace_hint:使用hint就地构造元素
try_emplace:若键不存在则原位插入,若键存在则不做任何事
erase:擦除元素 
swap:交换内容
extract:从另一容器释出结点
merge:从另一容器接合结点
查找
at:访问指定的元素,同时进行越界检查
operator[]:访问或插入指定的元素
count:返回匹配特定键的元素数量
find:寻找带有特定键的元素
contains:检查容器是否含有带特定关键的元素
equal_range:返回匹配特定键的元素范围
桶接口
begin(size_type),cbegin(size_type):返回一个迭代器,指向指定的桶的开始
end(size_type),cend(size_type):返回一个迭代器,指向指定的桶的末尾
bucket_count:返回桶数
max_bucket_count:返回桶的最大数量
bucket_size:返回在特定的桶中的元素数量
bucket:返回带有特定键的桶
哈希策略
load_factor:返回每个桶的平均元素数量
max_load_factor:管理每个桶的平均元素数量的最大值
rehash:为至少为指定数量的桶预留存储空间。
 这会重新生成哈希表。
reserve:为至少为指定数量的元素预留存储空间。
 这会重新生成哈希表。
观察器
hash_function:返回用于对关键哈希的函数
key_eq:返回用于比较键的相等性的函数
//
// Created by LiuHongzhe on 2021/11/11.
//
/*
 * 存储无序
 */
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
int main()
{
    unordered_map<string,string>hash;
    cout<<hash.empty()<<endl;//检查容器是否为空
    cout<<hash.size()<<endl;//返回容纳的元素数
    cout<<hash.max_size()<<endl;//返回可容纳的最大元素数
    hash["key"]="value";
    hash["456"]="123";
    hash["147"]="258";
    for(auto it=hash.begin();it!=hash.end();it++)
    {
        //返回指向容器第一个元素的迭代器,返回指向容器尾端的迭代器
        cout<<it->first<<"  ";
        cout<<it->second<<"   =>  ";
    }
    cout<<endl;
    hash.insert({"123","789"});//插入元素或结点
    for(auto it=hash.begin();it!=hash.end();it++)
    {
        cout<<it->first<<"  ";
        cout<<it->second<<"   =>  ";
    }
    cout<<endl;
    hash.erase("123");//擦除元素
    for(auto it=hash.begin();it!=hash.end();it++)
    {
        cout<<it->first<<"  ";
        cout<<it->second<<"   =>  ";
    }
    cout<<endl;

    cout<<hash.operator[]("147")<<endl;//访问或插入指定的元素
    cout<<hash.count("147")<<endl;//返回匹配特定键的元素数量
    cout<<hash.find("147")->first<<"   "<<hash.find("147")->second<<endl;//寻找带有特定键的元素
    hash.clear();//清除内容
    cout<<hash.empty()<<endl;
    return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值