STL学习

//vector的使用
//相当于数组,常用的 添加 删除  清空 测长 操作 

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
	vector<int>a;
	a.clear();//清空
	for(int i=0;i<5;i++)
	{
		a.push_back(i);//把元素i放到a里 
	} 
	for(int i=0;i<a.size();i++)//a.size()测量a的元素个数
	printf("%d ",a[i]); 
	puts("");
	vector<int>::iterator it;//vector容器指针
	it=a.begin();//指向第一个元素
	a.erase(it+2);//删除第三个
	for(int i=0;i<a.size();i++)
	printf("%d ",a[i]);
	system("pause"); 
}

//map的使用
//对杂乱无序的字符串或数字 做哈希匹配,可以重新编号,输入一些英文名字,给它们编号
#include<iostream>
#include<cstdio>
#include<string>
#include<map>
using namespace std;
int main()
{
	map<string,int>mp;
	mp.clear();//清空
	string nm[]={"abc","david","lucy","abc","app","lucy"};
	int index=1;
	for(int i=0;i<6;i++)
	{
		if(mp[nm[i]]==0)
		mp[nm[i]]=index++;//判断是否已经出现过,没出现过,就编号 
	} 
	map<string,int>::iterator it;//map容器的指针 
	for(it=mp.begin();it!=mp.end();it++)
	{
		cout<<it->first<<" "<<it->second<<endl;//按字典序输出每个的编号 
	} 
	system("pause"); 
}

//set的使用
//set可以插入很多值,去掉重复元素,并可以查找
#include<iostream>
#include<cstdio>
#include<string>
#include<set>
using namespace std;
int main()
{
	set<string>st;
	st.clear();//清空
	string nm[]={"abc","david","lucy","abc","app","lucy"};
	for(int i=0;i<6;i++)
	st.insert(nm[i]);// st里插入元素 
	set<string>::iterator it;//set容器里的指针
 	for(it=st.begin();it!=st.end();it++)
 	{
	 	cout<<*it<<endl;
 	}
 	it=st.find("app");
 	if(it!=st.end())
 	cout<<"find"<<" "<<"app"<<endl;//找到了就输出 find 
 	else 
 	cout<<"can't find"<<" "<<"app"<<endl;//找不到就输出 can't find
	system("pause");
} 


//stack的使用
//stack几个主要函数
//empty()堆栈为空则返回真
//pop()移除 栈顶元素(不会返回栈顶元素的值)
//push()在栈顶增加元素
//size()返回栈中元素数目 
//top()返回栈顶元素
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
int main()
{
	int a[]={1,3,5,7,9,11};
	stack<int>st;
	int i;
	if(st.empty())
	{
		for(i=0;i<3;i++)
		st.push(a[i]);
	}
	for(int i=0;i<2;i++)
	{
		printf("%d",st.top());
		st.pop();
	} 
	printf("\n");
	for(int i=3;i<6;i++)
	st.push(a[i]);
	printf("The size of stack is %d\n",st.size());
	int n=st.size();
	for(int i=0;i<n;i++)
	{
		printf("%d",st.top());
		st.pop();
	}
	printf("\n");
	system("pause");
} 



//queue的使用
//queue几个主要函数
//empty()队列为空则返回真
//pop()移除队首元素
//push()在队尾增加元素
//size()返回队列元素数目
//front()返回队首元素
//back()返回队尾元素 
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int main()
{
	int a[]={1,3,5,7,9,11};
	queue<int>qu;
	int i;
	if(qu.empty())
	{
		for(i=0;i<3;i++)
		qu.push(a[i]); 
	}
	printf("Front is %d and Back is %d\n",qu.front(),qu.back());
	for(int i=0;i<2;i++)
	{
		qu.pop();
		printf("Front is %d and Back is %d\n",qu.front(),qu.back());
	}
	for(int i=3;i<6;i++)
	qu.push(a[i]);
	printf("The size of queue is %d\n",qu.front(),qu.back());
	int n=qu.size();
	printf("Front is %d and Back id %d\n",qu.front(),qu.back());
	for(int i=0;i<n-1;i++)
	{
		qu.pop();
		printf("Front is %d and Back is %d\n",qu.front(),qu.back());
	}
	system("pause");
}
//deque 双向队列
//可以在尾部或首部 插入元素
//size()双端队列的长度
//empty()测试双端队列 是否为空
//capacity()双端队列的容量
//front()返回双端队列对首元素
//back()返回 双端队列对尾元素 
//push_front()双端队列队首插入元素
//pop_front()删除双端队列队首元素
//push_back()双端队列队尾插入元素
//pop_back()删除双端队列队尾元素
//begin()指向双端队列队首的迭代器
//end()指向双端队列队尾的下一个元素的迭代器


//用数组方式访问deque元素 
#include<deque>
#include<iostream>
using namespace std;
int main()
{
	deque<int>d;
	d.push_back(13);//双端队列队尾插入13;
	d.push_back(32);
	d.push_back(29);
	for(int i=0;i<d.size();i++)
	{
		cout<<"d["<<i<<"]="<<d[i]<<endl; 
	} 
	return 0;
}

//用迭代器访问deque元素
#include<deque>
#include<iostream>
using namespace std;
int main()
{
	deque<string>d;
	d.push_back("a");
	d.push_back("b");
	d.push_back("c");
	deque<string>::iterator i,iend;
	iend=d.end();//指向双端队列的下一个迭代器
	int j;
	for(i=d.begin(),j=0;i!=iend;i++,j++)
	//指向双向队列队首的迭代器 
	cout<<*i<<" ";
	cout<<endl;
	return 0; 
} 

#include<deque>
#include<iostream>
using namespace std;
int main()
{
	deque<int>d;
	d.push_back(6);
	d.push_back(7);
	d.push_front(5);//双端队列队首插入元素5
	for(i=0;i<d.size();i++)
	cout<<d[i]<<" ";
	cout<<endl;
	d.insert(d.begin()+1,9);
	for(int j=0;j<d.size();j++)
	cout<<d[j]<<" ";
	cout<<endl;
	return 0; 
} 

#include<deque>
#include<iostream>
using namespace std;
int main()
{
	deque<int>d;
	d.push_back(4);
	d.push_back(5);
	d.push_back(3);
	d.push_back(3);
	d.push_back(3);
	d.push_back(6);
	for(int i=0;i<d.size();i++)
	cout<<d[i]<<' ';
	cout<<endl;
	d.erase(d.begin()+1);//指向双端队列队首的迭代器 
	d.pop_front();//删除双端队列对首元素 
	d.pop_back();//删除双端队列队尾元素
	for(int j=0;j<d.size();j++)
	cout<<d[j]<<' ';
	cout<<endl;
	d.clear();//deque元素全部清除
	return 0; 
}

//list
//assign()给list赋值
//begin()返回指向第一个元素的迭代器
//clear()删除所有元素
//empty()如果list是空的话则返回true
//end()返回末尾的迭代器(返回最后一个元素的下一个迭代器) 
//erase()删除一个元素
//front()返回第一个元素
//insert()插入一个元素到list中
//max size()返回list能容纳的最大元素数量
//merge()合并两个list
//pop_back()删除最后一个元素
//pop_front()删除第一个元素
//push_back()在list的末尾添加一个元素
//push_front()在list的头部添加一个元素
//rbegin()返回指向第一个元素 
//remove()从list删除元素
//remove if()按指定条件删除元素
//rend()指向list末尾的逆向迭代器
//resize()改变list的大小
//reverse()把list的元素倒转 
//size()返回list中的元素个数


//用list处理整型数据
#include<iostream>
#include<list>
#include<cstring>
#include<algorithm> 
using namespace std;
int main()
{
	list<int>listone;
	list<int>::iterator i;
	listone.push_front(2);//在list的头部添加一个元素 
	listone.push_front(1);
	listone.push_back(3);//在list的末尾添加一个元素 
	listone.push_back(4);
	for(i=listone.begin();i!=listone.end();++i)
	//返回指向第一个元素的迭代器 
	cout<<*i<<" ";
	cout<<endl;
}


//用list处理字符型数据
#include<iostream>
#include<list>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
	list<char>listtwo;
	list<char>::iterator j;
	listtwo.push_front('A');//在list的头部添加一个元素 
	listtwo.push_front('B');
	listtwo.push_back('x');//在list的末尾添加一个元素 
	listtwo.push_back('y');
	for(j=listtwo.begin();j!=listtwo.end();++j)
	cout<<char(*j)<<" ";
	cout<<endl;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值