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; }
用心去做每件事
浙公网安备 33010602011771号