C++之unordered_map常用属性

unordered_map<int,bool> umap;

1. 特性

        1.1 unordered_map 使用hash表存储,内部无序;

        1.2 每个键都是唯一的,如果添加一个已有的键,则添加无效;

2. 常用操作

        1. iterator 配合begin()、end()不多说;

        2.  insert插入元素(四种方法)
                3.1 umap.insert({1,true});        //数组插入
                3.2 umap[2] = 0;                //键值插入
                3.3 umap.insert(umap2.begin(),umap2.end());    //插入另一个哈希表中的元素
                3.4 umap.insert(pair<int,bool>(0,true));    //pair插入

         3. find(key) 方法:

                2.1 如果找到key键,返回该迭代器;

                2.2 如果找不到,返回末尾end();

        所以 if(umap.find(key) == umap.end()   表示 如果umap中没有key键。

        4. 删除元素

                 /*按键删除

                当参数是key时,返回一个整数,该整数是移除元素的个数(即最大为1);

                若找不到该键,则返回0 。*/

                4.1 umap.erase(1);   

                /*迭代器单个删除

                删除该迭代器iterator对应的键和值

                */  

                4.2 umap.erase( iterator );

                 /*迭代器范围删除

                   删除两个迭代器iterator1 ~ iterator2 之间的所有键和值

                */

                4.3 umap.erase(iterator1 , iterator2);

                //清空整个umap

                4.4 umap.clear();

tips:

        如果用[] 访问umap中不存在的某key值,umap会自动插入进去<key,value>(如果value是string类型,则value默认为空串,如果为int或bool类型,则value默认为0)。

示例:

#include<iostream>
#include<unordered_map>
using namespace std;

int main(){
    unordered_map<int, bool> umap;
    unordered_map<int, bool> umap2;
    umap.insert({ 1,true });   //数组插入
    umap2[2] = false;          //键值插入
    umap.insert(umap2.begin(), umap2.end());  //另一个map之间转移插入
    umap.insert(pair<int,bool>(3,true));     //pair插入
    for (auto um : umap)
        cout << um.first << " " << um.second << endl;

    if (umap.find(2) == umap.end())          //如果没找到以“2”为键的键值对
        cout << "没找到以“2”为键的键值对!" << endl;
    else {           
        auto it = umap.find(2);               //如果找到,把迭代器赋给it
        cout << "找到以“2”为键的键值对!且其value="<<it->second<<endl;
    }

    auto begin = umap.begin();  
    ++begin;
    umap.erase(begin, umap.end());    //迭代器范围删除

    for(auto um : umap)
        cout << um.first << " " << um.second << endl;
    return 0;
}

输出:

1 1
2 0
3 1
找到以“2”为键的键值对!且其value=0
1 1

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值