萌新谈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里的两个元素。

 

 

 

 

        

        

 

 

     

 

posted @   TIM3347_Tian  阅读(22)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示