STL总技巧

#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;	
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值