map(STL容器)

map

一种基于红黑树(不需了解)的关联树容器,支持快速的插入,查找和删除操作,并保持了内部元素的有序性,其中每一个元素都有一个键和一个与之关联得值组成。

可以形象的理解为一个转换器,给它一个东西(变量),它就对应的给你一个东西(变量)。

我们无需了解map的底层结构 , 只需知道如何使用以及相关的时间复杂度即可;

(1.map的结构:

``

在map中,ikey值,确定了i<key,value>键值对,但是由于其内部的特殊结构,在进行各项操作时复杂度都很优秀。

(2.map初始化

在使用map时,需引入头文件<map>(如果是万能头当我没说)

#include<map>
//#include<bits/stdc++.h>  //懒人之选
using namespace std;       //map在std的命名空间中

例:

我们用上面的代码来声明一个map,其中TkeyTvalue为数据类型

一般情况下,我们只声明一个空的map,然后再往里面插入键值对。

注:在map键值对中<key,value>中,一个key唯一对应一个value,不同的key有可能对应
相同的value,就像数学函数中自变量和因变量的关系。

(3.map的基本操作

方法 作用 时间复杂度
insert({key,value}) 插入一对键值对<key,value> O(logn)
erase(key) 消除key所对的键值对 O(logn)
find(key) 查找指定键key所对的迭代器 O(logn)
operator[key] 查找指定键key所对的值 O(logn)
count(key) 查找是否存在key的键值对 O(logn)
size() 返回map中键值对的数量 O(1)
clear() 清空map中的键值对 O(n)
empty() 判断map是否为空 O(1)
begin() 返回第一个键值对所对的迭代器 O(1)
end() 返回最后一个键值对所对的迭代器 O(1)

注:在进行取值操作([] 操作符)时,一定保证key值存在,否则会产生错误,判断是否存在有如下几种方法:

map<int,int>mp;

//1.运用count函数:
if(mp.count(key)) 
    cout<<"1"<<endl;
//2.运用find函数
if(mp.find(key)!=mp.end)
    cout<<"1"<<endl;

遍历map一般也有两种方法:

map<int,int>mp;
//1.用auto关键字进行遍历
for(auto &i : mp)
    cout<<i.first<<" "<<i.second<<endl;
//2.用迭代器进行遍历
map<int,int>::iterator it;

for(it=mp.begin();it!=mp.end;it++){
    //cout<<(*it).first<<" "<<(*it).second<<endl;
    cout<<it->first>>" ">>it->second>>endl;
}
posted @   adsd45666  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示