队列:先进先出
头文件:<queue>
基本操作:
queue<Type>q; //定义队列,Type可以系统定义的数据类型,也可以是自己定义的结构体类型 q.push(item); //把item放入队列的尾部 q.front(); //返回队首元素,但不会删除 q.pop(); //删除队首元素 q.back(); //返回队尾元素 q.size(); //返回元素个数 q.empty(); //检查队列是否为空
优先队列 :按照权值进行队列排序
头文件:<queue>
基本操作:
priority_queue<Type,vector<Type>,greater<Type> >q; //队首元素最小。 若是自定义结构体,需要重载运算符> priority_queue<Type,vector<Type>,less<Type> >q; //队首元素最大.。 若是自定义结构体,需要重载运算符< bool operator >(struct node p,struct node q) {//无论是重载>还是重载<,下面的比较>都是从小到大排序,<都是从大到小排序 return p.x>q.x; // >号代表从小到大排序 (按照x排序) } q.top(); // 返回队头元素 q.empty(); //判断队列是否为空 q.size(); //返回队列内元素个数 q.push(); //插入元素到队尾 (并排序) q.pop(); //删除队头元素
双端队列:队列和栈的结合体
头文件:<deque>
基本操作:
deque<Type>de; //创建一个双端队列 de.front(); //读取双端队列的队首元素 de.back(); //读取双端队列的队尾元素 de.push_front(x); //双端队列队首增加一个元素x de.push_back(x); //双端队列尾部增加一个元素x de.pop_front(); //删除双端队列的队首元素 de.pop_back(); //删除双端队列的队尾元素 de.clear(); //清空双端队列 de.empty(); //判断双端队列是否为空 de.size(); //返回双端队列中元素的个数 *de.begin(); //返回队首元素 *(de.end()-1); //返回队尾元素 deque<Type>::iterator pos; for(pos=de.begin();pos!=de.end();pos++){//遍历双端队列 cout<<*pos; } de.begin(); //返回指向双向队列的队首元素的指针 de.end(); //返回指向双端队列元素队尾元素的下一个位置的指针
写于2020/7/31 11:58
增添双端队列于2020/8/6 10:20
增添双端队列中de.front()与de.back()于2020/9/8 20:13