【模板】关于(不太熟悉的)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
某题代码 #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; }

浙公网安备 33010602011771号