目录
queue
void queue_constructor(){
//构造方法
queue<int> que;
queue<int> que1 = queue<int>();
queue<int> que2(que1);
//队尾入队
que1.push(1);
que1.push(2);
//队头出队
que1.pop();
//查看队头、队尾元素
int front = que1.front();
int back = que1.back();
//size、empty
int size = (int)que1.size();
bool isempty = que1.empty();
cout<<"size = "<<size<<"isempty = "<<isempty<<endl;
}
void queue_pointer(){
//生成一个队列指针
queue<int >* intQueue = new queue<int>();
cout<<"intQueue = "<<intQueue<<endl;
//从队尾入队
intQueue->push(1);
//从队头出队
intQueue->pop();
intQueue->push(1);
intQueue->push(2);
//队列元素个数
size_t size = intQueue->size();
cout<<"size = "<<size<<endl;
//队列是否为空
bool isEmpty = intQueue->empty();
cout<<"isEmpty = "<<isEmpty<<endl;
//查看队头元素
int frontElement = intQueue->front();
cout<<"frontElement = "<<frontElement<<endl;
//查看队尾元素
int backElement = intQueue->back();
cout<<"backElement = "<<backElement<<endl;
delete intQueue;
}
deque
void Deque_TestFunc(){
deque<int> intDeque;
intDeque.push_front(0);
intDeque.push_back(1);
intDeque.front();
intDeque.back();
intDeque.pop_front();
intDeque.pop_back();
intDeque.size();
intDeque.empty();
}
PriorityQueue
void LCPriorityQueue_test1(){
//对于基础类型 默认是大顶堆
//等同于 priority_queue<int, vector<int>, less<int> > a;
priority_queue<int> a;
for (int i = 0; i < 5; i++){
a.push(i);
}
while (!a.empty()){
cout << a.top() << ' ';
a.pop();
}
cout<<endl<<"------------------"<< endl;
//大顶堆
priority_queue<string> b;
b.push("abc");
b.push("abcd");
b.push("cbd");
while (!b.empty()){
cout << b.top() << ' ';
b.pop();
}
cout<<endl<<"------------------"<< endl;
//这样就是小顶堆
//这里一定要有空格,不然成了右移运算符↓
priority_queue<int, vector<int>, greater<int> > c;
for (int i = 0; i < 5; i++){
a.push(i);
c.push(i);
}
while (!c.empty()){
cout << c.top() << ' ';
c.pop();
}
cout << endl;
}
void LCPriorityQueue_test2(){
priority_queue<pair<int, int> > que;
pair<int, int> a(1, 2);
pair<int, int> b(1, 3);
pair<int, int> c(2, 5);
que.push(a);
que.push(b);
que.push(c);
while (!que.empty()){
cout << que.top().first << ' ' << que.top().second << endl;
que.pop();
}
}
void LCPriorityQueue_test3(){
//方法1
struct tmp1{//运算符重载<
int x;
tmp1(int a) {x = a;}
bool operator<(const tmp1& a) const{
return x < a.x; //大顶堆
}
};
//方法2
struct tmp2{//重写仿函数
bool operator() (tmp1 a, tmp1 b){
return a.x < b.x; //大顶堆
}
};
tmp1 a(1);
tmp1 b(2);
tmp1 c(3);
priority_queue<tmp1> d;
d.push(b);
d.push(c);
d.push(a);
while (!d.empty()){
cout << d.top().x <<endl;
d.pop();
}
cout << endl;
priority_queue<tmp1, vector<tmp1>, tmp2> f;
f.push(c);
f.push(b);
f.push(a);
while (!f.empty()){
cout << f.top().x <<endl;
f.pop();
}
}
行者常至,为者常成!