网站备案要求,免费游戏网站建设游戏后台,国家高新技术企业管理工作网,赣州建设企业网站目录
一、stack介绍 使用方法 二、queue介绍 queue的使用 三、priority_queeue 优先级队列介绍 一、stack介绍 1. stack是一种容器适配器#xff0c;专门用在具有后进先出操作的上下文环境中#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器…目录
一、stack介绍 使用方法 二、queue介绍 queue的使用 三、priority_queeue 优先级队列介绍 一、stack介绍 1. stack是一种容器适配器专门用在具有后进先出操作的上下文环境中其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的容器适配器即是对特定类封装作为其底层的容器并提供一组特定的成员函数来访问其元素将特定类作为其底层的元素特定容器的尾部(即栈顶)被压入和弹出。 3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类这些容器类应该支持以下操作 empty判空操作 back获取尾部元素操作 push_back尾部插入元素操作 pop_back尾部删除元素操作 4. 标准容器vector、deque、list均符合这些需求默认情况下如果没有为stack指定特定的底层容器默认情况下使用deque。 使用方法 头文件#includestack 函数说明接口说明stack()构造空的栈empty()检测stack是否为空size()返回stack中元素的个数top()返回栈顶元素的引用push()将元素val压入stack中pop()将stack中尾部的元素弹出
void testStack()
{stackint st;//入栈st.push(1);st.push(2);st.push(3);st.push(4);if (st.empty()){cout 判空true endl;}elsecout 判空false endl;cout st容量 st.size() endl;cout 栈顶元素值: st.top() endl;//出栈cout 出栈元素;while (!st.empty()){cout st.top() ;st.pop();}
}
int main()
{testStack();return 0;
} 二、queue介绍 1. 队列是一种容器适配器专门用于在FIFO上下文(先进先出)中操作其中从容器一端插入元素另一端提取元素。 2. 队列作为容器适配器实现容器适配器即将特定容器类封装作为其底层容器类queue提供一组特定的成员函数来访问其元素。元素从队尾入队列从队头出队列。 3. 底层容器可以是标准容器类模板之一也可以是其他专门设计的容器类。该底层容器应至少支持以下操作: empty检测队列是否为空 size返回队列中有效元素的个数 front返回队头元素的引用 back返回队尾元素的引用 push_back在队列尾部入队列 pop_front在队列头部出队列 4. 标准容器类deque和list满足了这些要求。默认情况下如果没有为queue实例化指定容器类则使用标准容器deque。 queue的使用 所需头文件#includequeue 函数声明接口说明queue()构造空的队列empty()检测队列是否为空是返回true否则返回falsesize()返回队列中有效元素的个数front()返回队头元素的引用back()返回队尾元素的引用push()在队尾将元素val入队列pop()将队头元素出队列
void testQueue()
{queueint q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);//判空if (q.empty()){cout 判空true endl;}elsecout 判空:false endl;cout 队头元素 q.front() endl;cout 队尾元素 q.back() endl;cout 队列的大小 q.size() endl;cout 出队列;while (!q.empty()){cout q.front() ;q.pop();}
}
int main()
{testQueue();return 0;
} 三、priority_queeue 优先级队列介绍 优先级队列默认使用vector作为其底层存储数据的容器在vector上又使用了堆算法将vector中元素构造成堆的结构因此priority_queue就是堆所有需要用到堆的位置都可以考虑使用priority_queue。 注意默认情况下priority_queue是大堆。 优先级队列所需的头文件#includequeue 与queue用同一个头文件 如果需要创建小堆需要将第三个模板参数换成greater比较的方式 greater所需头文件为#inclduefunctional priority_queueint, vectorint, greaterint); 函数声明接口说明priority_queue()/priority_queue(first, last)构造一个空的优先级队列empty( )检测优先级队列是否为空是返回true否则返回 falsetop( )返回优先级队列中最大(最小元素)即堆顶元素push(x)在优先级队列中插入元素xpop()删除优先级队列中最大(最小)元素即堆顶元素
void TestPriorityQueue()
{// 默认情况下创建的是大堆其底层按照小于号比较vectorint v{ 3,2,7,6,0,4,1,9,8,5 };priority_queueint q1;for (auto e : v)q1.push(e);//cout q1.top() endl;cout q1:;while (!q1.empty()){cout q1.top() ;q1.pop();}cout endlq2:;// 如果要创建小堆将第三个模板参数换成greater比较方式priority_queueint, vectorint, greaterint q2(v.begin(), v.end());while (!q2.empty()){cout q2.top() ;q2.pop();}
}
int main()
{TestPriorityQueue();return 0;
}