#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
node(){
}
node(int x,int y):x(x),y(y){}
node(int x):x(x){
}
bool operator < (const node &n)const{
return x==n.x?y<n.y:x>n.x;
}
};
int main()
{
map<node,string>mm;
map<string,int>mm1;
// map<char,int>mm2;
mm1["rxn"]++;
mm1["rxa"]++;
map<string,int>::iterator it1;
for(it1=mm1.begin();it1!=mm1.end();it1++)
cout<<it1->first<<endl;
mm.clear();
node q1;q1.x=2;
mm.insert(pair<node,string>(q1,"rxn2"));
mm.insert(pair<node,string>(node(1),"rxn"));
// mm.insert(pair<int,string>(1,"rxn1"));//插入如果关键字已经存在则会失败
// mm[1]="rxn1";//通过数组访问直接修改则可以修改
map<node,string>::iterator it;
for(it=mm.begin();it!=mm.end();it++)
cout<<it->second<<endl;
map<int,vector<char> >mm2;
mm2[1].push_back('a');
mm2[1].push_back('a');
mm2[5].push_back('b');
map<int,vector<char> >::iterator itt;
for(itt=mm2.begin();itt!=mm2.end();itt++)
{
for(int i=0;i<itt->second.size();i++)
cout<<itt->second[i]<<' ';
cout<<endl;
}
/*
map第一个参数为关键字,第二个为对应的值,会根据关键字自动的排序以及去重
参数可以为vector容器
默认顺序是按照关键字从小到大排列,可以通过struct重载小于号来修改
*/
priority_queue<node>Q;
Q.push(node(5,6));
Q.push(node(5,7));
Q.push(node(3,8));
while(!Q.empty())
{
cout<<Q.top().x<<' '<<Q.top().y<<endl;
Q.pop();
}
/*
优先队列 默认是最大堆,所以top是优先级最大的,从大到小排序的
可以利用?修改两个参数的优先级,一个从小到大,一个从大到小
*/
cout<<"————————————————————————————————————————"<<endl;
vector<int>V;
for(int i=1;i<20;i++)
V.push_back(i);
vector<int>::iterator iter;
V.erase(V.begin()+1);
for(int i=0;i<V.size();i++)
cout<<V[i];
V.insert(V.begin(),0);
cout<<endl;
for(int i=0;i<V.size();i++)
cout<<V[i];
cout<<endl;
/*
vector 主要是 插入和删除 插入的时候参数为位置,元素
*/
list<int>L;
for(int i=1;i<5;i++)
L.push_front(i);
for(int i=6;i<10;i++)
L.push_back(i);
list<int>::iterator ll;
for(ll=L.begin();ll!=L.end();ll++)
cout<<*ll<<endl;
L.erase(L.begin());
for(ll=L.begin();ll!=L.end();ll++)
cout<<*ll<<endl;
/*
list和vector最大的区别就是可以往头部和尾部插入元素,访问的时候需要使用迭代器
*/
set<int>SS;
for(int i=10;i>=1;i--)
{
SS.insert(i);
}
SS.insert(3);
set<int>::iterator its;
for(its=SS.begin();its!=SS.end();its++)
{
cout<<*its<<' ';
}
cout<<endl;
if(SS.find(11)==SS.end())cout<<"not OK"<<endl;
return 0;
}
STL总技巧
最新推荐文章于 2022-02-11 11:58:13 发布