STL学习

来源:互联网 发布:移动网络怎么样 编辑:程序博客网 时间:2024/05/22 12:20
//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 findsystem("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);//双端队列队首插入元素5for(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;}


0 0
原创粉丝点击