vector,deque,list相关操作
发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,1、vector的基本操作(1)、对动态数组元素的添加和删除、获取代码如下:#include#includeusing namespace std;//数组元素的添加和删除、获取int main(vo
1、vector的基本操作
(1)、对动态数组元素的添加和删除、获取
代码如下:
#include#include using namespace std;//数组元素的添加和删除、获取int main(void){ vector v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); cout<<"len:"< 0){ cout< (2)、vector的初始化
代码如下:
#include#include using namespace std;void printV(vector &v){ for(int i = 0; i < v.size(); i++){ cout< v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); v1.push_back(7); vector v2 = v1; //对象初始化 vector v3(v1.begin(), v1.begin()+2); //对象初始化/* //vector的遍历 for(i =a 0; i < v1.size(); i++){ v1[i] = i + 1; } int i; for(i = 0; i < v1.size(); i++){ cout< v5(10); //前10个元素初始化为0; v5.push_back(100); v5.push_back(200); printV(v5); return 0; } (3)、vector中迭代器的正向和反向遍历
代码如下:
#include#include using namespace std;int main(void){ vector v1(10); //初始化空间的值都为0; for(int i = 0; i < 10; i++){ v1[i] = i+1; } //迭代器//1(begin)、3、5 、(end) 当it = v1.end()的时候,说明这个容器已经遍历完了;//end()的位置,应该是5的后面; //正向遍历 vector ::iterator it; for(it = v1.begin(); it != v1.end(); it++){ cout<<*it<<" "; } cout< ::reverse_iterator rit; for(rit = v1.rbegin(); rit != v1.rend(); rit++){ cout<<*rit<<" "; } cout< (4)、vector中的元素删除操作
代码如下:
#include#include using namespace std;void printV(vector &v){ for(int i = 0; i < v.size(); i++){ cout< v1(10); for(int i = 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 ::iterator it; 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); return 0;}
2、deque的基本操作
双端数组的基本操作;
代码如下:
#include#include #include using namespace std;void printD(deque &d){ deque ::iterator it; for(it = d.begin(); it != d.end(); it++){ cout<<*it<<" "; } cout< 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<<"头部元素:"< ::iterator it; it = find(d1.begin(), d1.end(), -33); if(it != d1.end()){ cout<<"-33数组的下标是:"<
3、stack的基本操作
代码如下:
#include#include using namespace std;class Teacher{ public: void printS(){ cout<<"age :"< s; s.push(&t1); s.push(&t2); s.push(&t3); while(!s.empty()){ Teacher *tmp = s.top(); tmp->printS(); s.pop(); } return 0;}/*int main(void){ Teacher t1,t2,t3; t1.age = 31; t2.age = 32; t3.age = 33; stack s; s.push(t1); s.push(t2); s.push(t3); while(!s.empty()){ Teacher tmp = s.top(); tmp.printS(); s.pop(); } return 0;}*//*int main(void){ stack s; //入栈 for(int i = 0; i < 10; i++){ s.push(i+1); } cout<
4、queue的基本操作
代码如下:
#include#include using namespace std;class Teacher{ public: int age; char name[25]; public: void printQ(){ cout<<"age :"< q; q.push(&q1); q.push(&q2); q.push(&q3); while(!q.empty()){ Teacher *tmp; tmp = q.front(); //获取队列头的元素 tmp->printQ(); q.pop(); } return 0;}/*//队列中的基础数据类型,int main(void){ queue q; q.push(1); q.push(2); q.push(3); cout<<"对头元素:"<
5、priority_queue的基本操作
代码如下:
#include#include using namespace std;int main(void){ priority_queue p1; //默认的情况下:是最大优先级队列; priority_queue , less > p2; priority_queue , greater > p3; //是最小的优先级队列 p1.push(33); p1.push(11); p1.push(22); p1.push(77); p1.push(55); p1.push(99); cout<<"队头元素:"<
6、list的基本操作
(1)、list的遍历
代码如下:
#include#include using namespace std;void printL(list
&l){ list ::iterator it; for(it = l.begin(); it != l.end(); it++){ cout<<*it<<" "; } cout< 素的位置;int main(void){ list l; cout<<"list的大小:"< ::iterator it = l.begin(); it++; it++; it++; l.insert(it, 100); //STL中的插入默认是前插; printL(l);//1、list链表的节点的index是从0位置开始的//2、insert方法都是默认的前插 return 0;} (2)、list的删除
代码如下:
#include#include using namespace std;void printL(list
&l){ list ::iterator it; for(it = l.begin(); it != l.end(); it++){ cout<<*it<<" "; } cout< l; for(int i = 0; i < 10; i++){ l.push_back(i); } list ::iterator it1 = l.begin(); list ::iterator it2 = 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); return 0;}