萌新谈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里的两个元素。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号