vector,deque,list相关操作
1、vector的基本操作
(1)、对动态数组元素的添加和删除、获取
代码如下:
#include<iostream>#include<vector>usingnamespacestd;//数组元素的添加和删除、获取intmain(void){vector<int>v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);cout<<"len:"<<v1.size()<<endl;cout<<"获取头部元素:"<<v1.front()<<endl;//修改头部、尾部元素的值//函数返回值当左值,应该返回一个引用;v1.front()=11;v1.back()=55;while(v1.size()>0){cout<<v1.back()<<"";//获取尾部元素;v1.pop_back();//删除尾部元素}cout<<endl;}
(2)、vector的初始化
代码如下:
#include<iostream>#include<vector>usingnamespacestd;voidprintV(vector<int>&v){for(inti=0;i<v.size();i++){cout<<v[i]<<"";}cout<<endl;}intmain(void){//vector类vector<int>v1;v1.push_back(1);v1.push_back(3);v1.push_back(5);v1.push_back(7);vector<int>v2=v1;//对象初始化vector<int>v3(v1.begin(),v1.begin()+2);//对象初始化/*//vector的遍历for(i=a0;i<v1.size();i++){v1[i]=i+1;}inti;for(i=0;i<v1.size();i++){cout<<v1[i]<<"";}cout<<endl;*/printV(v1);//push_back()的强化记忆;vector<int>v5(10);//前10个元素初始化为0;v5.push_back(100);v5.push_back(200);printV(v5);return0;}
(3)、vector中迭代器的正向和反向遍历
代码如下:
#include<iostream>#include<vector>usingnamespacestd;intmain(void){vector<int>v1(10);//初始化空间的值都为0;for(inti=0;i<10;i++){v1[i]=i+1;}//迭代器//1(begin)、3、5、(end)当it=v1.end()的时候,说明这个容器已经遍历完了;//end()的位置,应该是5的后面;//正向遍历vector<int>::iteratorit;for(it=v1.begin();it!=v1.end();it++){cout<<*it<<"";}cout<<endl;//反向遍历vector<int>::reverse_iteratorrit;for(rit=v1.rbegin();rit!=v1.rend();rit++){cout<<*rit<<"";}cout<<endl;return0;}
(4)、vector中的元素删除操作
代码如下:
#include<iostream>#include<vector>usingnamespacestd;voidprintV(vector<int>&v){for(inti=0;i<v.size();i++){cout<<v[i]<<"";}cout<<endl;}//删除intmain(void){vector<int>v1(10);for(inti=0;i<10;i++){v1[i]=i+1;}//区间删除v1.erase(v1.begin(),v1.begin()+3);//删除开始的3个元素//指定(元素)位置删除v1.erase(v1.begin());//在头部删除一个//根据元素的值v1[1]=2;v1[3]=2;vector<int>::iteratorit;for(it=v1.begin();it!=v1.end();it++){if(*it==2){v1.erase(it);//删除的是元素,参数是迭代器}}v1.insert(v1.begin(),100);v1.insert(v1.end(),200);printV(v1);return0;}
2、deque的基本操作
双端数组的基本操作;
代码如下:
#include<iostream>#include<deque>#include<algorithm>usingnamespacestd;voidprintD(deque<int>&d){deque<int>::iteratorit;for(it=d.begin();it!=d.end();it++){cout<<*it<<"";}cout<<endl;}intmain(void){deque<int>d1;d1.push_back(1);d1.push_back(3);d1.push_back(5);d1.push_front(-11);d1.push_front(-33);d1.push_front(-55);cout<<"头部元素:"<<d1.front()<<endl;cout<<"尾部元素:"<<d1.back()<<endl;printD(d1);d1.pop_front();d1.pop_back();printD(d1);//查找-33在数组中的下标deque<int>::iteratorit;it=find(d1.begin(),d1.end(),-33);if(it!=d1.end()){cout<<"-33数组的下标是:"<<distance(d1.begin(),it)<<endl;//查找下标;}else{cout<<"没有找到值为-33"<<endl;}return0;}
3、stack的基本操作
代码如下:
#include<iostream>#include<stack>usingnamespacestd;classTeacher{public:voidprintS(){cout<<"age:"<<age<<endl;}public:intage;charname[15];};intmain(void){Teachert1,t2,t3;t1.age=31;t2.age=32;t3.age=33;stack<Teacher*>s;s.push(&t1);s.push(&t2);s.push(&t3);while(!s.empty()){Teacher*tmp=s.top();tmp->printS();s.pop();}return0;}/*intmain(void){Teachert1,t2,t3;t1.age=31;t2.age=32;t3.age=33;stack<Teacher>s;s.push(t1);s.push(t2);s.push(t3);while(!s.empty()){Teachertmp=s.top();tmp.printS();s.pop();}return0;}*//*intmain(void){stack<int>s;//入栈for(inti=0;i<10;i++){s.push(i+1);}cout<<s.size()<<endl;//栈的大小//出栈while(!s.empty()){inttmp=s.top();//获取栈顶元素cout<<tmp<<"";s.pop();}cout<<endl;return0;}*/
4、queue的基本操作
代码如下:
#include<iostream>#include<queue>usingnamespacestd;classTeacher{public:intage;charname[25];public:voidprintQ(){cout<<"age:"<<age<<endl;}};intmain(void){Teacherq1,q2,q3;q1.age=31;q2.age=32;q3.age=33;queue<Teacher*>q;q.push(&q1);q.push(&q2);q.push(&q3);while(!q.empty()){Teacher*tmp;tmp=q.front();//获取队列头的元素tmp->printQ();q.pop();}return0;}/*//队列中的基础数据类型,intmain(void){queue<int>q;q.push(1);q.push(2);q.push(3);cout<<"对头元素:"<<q.front()<<endl;cout<<"队列的大小"<<q.size()<<endl;while(!q.empty()){cout<<q.front()<<"";q.pop();}cout<<endl;return0;}*/
5、priority_queue的基本操作
代码如下:
#include<iostream>#include<queue>usingnamespacestd;intmain(void){priority_queue<int>p1;//默认的情况下:是最大优先级队列;priority_queue<int,vector<int>,less<int>>p2;priority_queue<int,vector<int>,greater<int>>p3;//是最小的优先级队列p1.push(33);p1.push(11);p1.push(22);p1.push(77);p1.push(55);p1.push(99);cout<<"队头元素:"<<p1.top()<<endl;cout<<"队列的大小:"<<p1.size()<<endl;while(!p1.empty()){cout<<p1.top()<<"";//获取队头的是top();p1.pop();}cout<<endl;cout<<"--------------------测试最小值优先级队列---------------------"<<endl;p3.push(33);p3.push(11);p3.push(22);p3.push(77);p3.push(55);p3.push(99);cout<<"队头元素:"<<p3.top()<<endl;cout<<"队列的大小:"<<p3.size()<<endl;while(!p3.empty()){cout<<p3.top()<<"";//获取队头的是top();p3.pop();}cout<<endl;return0;}
6、list的基本操作
(1)、list的遍历
代码如下:
#include<iostream>#include<list>usingnamespacestd;voidprintL(list<int>&l){list<int>::iteratorit;for(it=l.begin();it!=l.end();it++){cout<<*it<<"";}cout<<endl;}//迭代器中的begin()和end()代表的含义:begin代表的是第一个元素的位置,end代表的是最后一个元素的下一个元>素的位置;intmain(void){list<int>l;cout<<"list的大小:"<<l.size()<<endl;for(inti=0;i<10;i++){l.push_back(i);}printL(l);//list不能随即访问;list<int>::iteratorit=l.begin();it++;it++;it++;l.insert(it,100);//STL中的插入默认是前插;printL(l);//1、list链表的节点的index是从0位置开始的//2、insert方法都是默认的前插return0;}
(2)、list的删除
代码如下:
#include<iostream>#include<list>usingnamespacestd;voidprintL(list<int>&l){list<int>::iteratorit;for(it=l.begin();it!=l.end();it++){cout<<*it<<"";}cout<<endl;}//list删除intmain(void){list<int>l;for(inti=0;i<10;i++){l.push_back(i);}list<int>::iteratorit1=l.begin();list<int>::iteratorit2=l.begin();it2++;it2++;it2++;l.erase(it1,it2);//删除是左闭右开的操作;[0,3)printL(l);l.erase(l.begin());printL(l);l.insert(l.begin(),100);l.insert(l.begin(),100);l.insert(l.begin(),100);l.insert(l.begin(),100);l.insert(l.begin(),100);printL(l);l.remove(100);//删除元素的方法,删除了所有值为100的元素;printL(l);return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。