萌新谈STL(下) set,map和pair
前一篇的连接:https://blog.csdn.net/qq_41938259/article/details/86508174
自以为前一篇在算法比赛中比较常用吧,这一篇仅供科普,用于非常规的情况下。
set的常见用法:
1)set的定义:set<typename> name;
2)set数组的定义:set<typename>arrayname[arraysize]
3)set只能通过迭代器访问:set<typename>::iterator it;
4)常用函数实例讲解:
inset():自动递增排序和去重的插入。
find(value):返回set中对应值为value的迭代器,时间复杂度o(logN)
erase():
st.erase(it) it是所需要删除元素的迭代器 复杂度O(1)
st.erase(value) value是要删除元素的值 复杂度O(logN)
st.erase(first,last) 删除[first,last) 复杂度O(last-first)
size() 获得总的元素个数 复杂度O(1)
clear() 清空所有元素 复杂度O(N)
map用法:
1)定义:map<typename1,typename2>mp;
2)通过迭代器访问map<typename1,typename2>::iteratornit;
3)常用函数实例讲解:
find(key) 返回键为key的映射迭代器 复杂度O(logN)
erase():
mp.erase(it) it是所需要删除元素的迭代器 复杂度O(1)
mp.erase(key) key是欲删除的映射的键 复杂度O(1)
mp.erase(first,last) 删除[first,last) 复杂度O(last-first)
size() 获得总的映射的对数 复杂度O(1)
clear() 清空所有元素 复杂度O(N)
pair常见用法:
它的常见用法类似Python的键值对的用法,需要添加头文件#include<utility>示例:
struct pair
{
typeName1 first;
typeName2 second;
};
pair有两个参数,分别对应first和second的数据类型,他们可以是基本数据类型或容器
pair<typeName1,typeName2> name;
pair<string,int> p;//定义string和int的pair的示例
初始化
pair<string,int>("haha",5);//在定义时同时初始化
make_pair("haha",5);//用自带的make_pair函数进行初始化
特殊用法:
1)比较大小:
pair<int,int> p1(5,10);
pair<int,int> p2(10,5);
if(p1>P2)
cout<<"True"<<endl;
else
cout<<"False"<<endl;
先比较左边的,一样的话在比较右边的值,所以输出False。
2)访问pair的元素
pair<string,int> p;
p.first="haha";
p.second=5;
cout<<p.first<<p.second<<endl;
由上面看出,主要使用first和second来访问pair里的两个元素。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!