【模板】关于(不太熟悉的)STL

set&multiset

 set不可重复,multiset可以

//头文件
#include<set>
//定义方法
multiset<int> s;
multiset<int>::iterator it;//迭代器
//集合大小
s.size();
s.empty();
//查询
count() //返回某个值元素的个数
s.find(x); // 查找键x是否存在,若存在,返回该元素的迭代器;若不存在,则返回s.end()
s.lower_bound(x); // 返回第一个key>=x元素的迭代器
s.upper_bound(x); // 返回第一个key>x元素的迭代器
s.begin() //返回指向第一个元素的迭代器
s.end() //返回指向最后一个元素的迭代器
s.rbegin() //返回指向集合中最后一个元素的反向迭代器
s.rend() //返回指向集合中第一个元素的反向迭代器
//更改
s.insert(x); // 在容器中插入元素x
s.erase(x);// 删除容器中值为x的元素
s.erase(head,tail);// 删除区间[head,end)的所有元素
s.clear();// 清空所有元素
s.swap() //交换两个集合变量
for(it=s.begin();it!=s.end();it++) cout<<*it<<endl;

deque

双向队列

d[ ]:用来访问双向队列中单个的元素。
d.front():返回第一个元素的引用。
d.back():返回最后一个元素的引用。
d.push_front(x):把元素x插入到双向队列的头部。
d.pop_front():弹出双向队列的第一个元素。
d.push_back(x):把元素x插入到双向队列的尾部。
d.pop_back():弹出双向队列的最后一个元素。

list

 

map

博客1

博客2

某题代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<sstream>
#include<map>
using namespace std;
int main(){   
    string s_name,b_name;
    map<string,string> a;
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        cin>>s_name>>b_name; 
        if(!a.count(s_name)) a[b_name]=s_name;  //出没出现过
        else{    
            a[b_name]=a[s_name];    
            a.erase(s_name);   
        }
    }
    printf("%d\n",a.size());
    map<string,string>::iterator it;
    for(it=a.begin();it!=a.end();it++) cout<<it->second<<' '<<it->first<<endl;//second:value first:key
    return 0;    
}

 

multiple

 

stack

 

vector

 

posted @ 2021-10-17 21:48  latent_Lin  阅读(35)  评论(0)    收藏  举报