stack和queue:只能在一端进行操作
stack
emplace |
改进版的insert |
empty |
对栈判空 |
pop |
出栈 |
push |
入栈 |
size |
查看栈中元素的个数 |
top |
获取栈顶元素 |
swap |
交换两个栈 |
最关键的是二叉树的层序遍历
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
用队列实现栈
https://leetcode-cn.com/problems/implement-stack-using-queues/
二叉树的层平均值
https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/
用
priority_queue
其实就是堆大堆和小堆
大堆---------对顶元素最大---采用的比较为默认的less--->>是小于比较
小堆---------堆顶元素最小---采用的比较是greater
底层就是动顺序表
template
class Compare = less
模板的参数
class T |
这个参数就是模板中数据类型的参数 |
class Container = vector |
模板中存放数据的容器,默认的类型是vetor |
class Compare = less |
这里的就是存放的比较方法,默认是less比较法-->创建出来的就是大堆 |
默认小堆 |
priority_queue<int> q1; |
大堆 |
priority_queue<int> q2(v.begin(), v.end()); |
小堆 |
priority_queue <int, vector<int>, greater<int>> q3(v.begin(), v.end()); |
#include
#include 777
using namespace std;
class Data{
public:
Data(int year = 2019, int month = 5, int day = 18)
:_year(year)
, _month(month)
, _day(day)
{}
bool operator <(const Data& d)const { //重载 < 号注意后面的参数括号中的this指针
return _day < d._day; //私有成员变量不能在类外使用,只能在类中使用
}
private:
int _year;
int _month;
int _day;
};
typedef bool(*compare)(const Data* pleft, const Data* pRight); //定义一个函数类型
// 1.函数指针解决自定义类型的比较方法
bool Less(const Data* pleft, const Data* pRight){ //传入的日期类型的对象
return *pleft < *pRight;
}
int main(){
#if 0
priority_queue q1;
vector v{ 3, 4, 6, 3, 5, 2, 0, 8 };
priority_queue q2(v.begin(), v.end());
priority_queue , greater> q3(v.begin(), v.end());
#endif
Data d1(2019, 6, 27);
Data d2(2019, 6, 28);
Data d3(2019, 6, 29);
Data d4(2019, 6, 30);
priority_queue, compare> q(Less);
// 初始化对象的构造函数
//explicit priority_queue (const Compare& comp = Compare(),
// const Container& ctnr = Container());
q.push(&d1);
q.push(&d2);
q.push(&d3);
q.push(&d4);
system("pause");
return 0;
}
//什么是类型 :
// typedef bool(*compare)(const Data* pleft, const Data* pRight); 定义一个compare* 的函数类型
Data*、 vector、 cmppare
模板参数列表中都是类型
bool operator <(const Data& d)const { //重载 < 号注意后面的参数括号中的this指针
return _day < d._day; //私有成员变量不能在类外使用,只能在类中使用