STL学习之stack
栈是一种容器适配器,是一种后入先出(LIFO )队列。
基本操作
stack<int>s;构造
stack<int>s1(s2);将s2赋值给s1
s.push(x);入栈
s.pop();出栈,注意:出栈操作只是删除栈顶的元素,并不返回该元素
s.top();访问栈顶
s.empty().判断栈空,当栈空时返回true
s.size();栈中的元素个数
问题:用stack实现FIFO的功能
// FIFObuildinStack.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<stack> #include<iostream> using namespace std; class FIFO { private: stack<int>a; stack<int>b; public: //FIFO(); void enqueue(int in); int dequeue(); bool isempty(); //~FIFO(); }; void FIFO::enqueue(int in)//入队 { int k; while (!b.empty()) { k = b.top(); a.push(k); b.pop(); } a.push(in); } int FIFO::dequeue()//出队 { int cc; while (!a.empty()) { cc = a.top(); a.pop(); b.push(cc); } int bb = b.top(); b.pop(); return bb; } bool FIFO::isempty() { return(a.empty() && b.empty()); } int _tmain(int argc, _TCHAR* argv[]) { FIFO fifo; fifo.enqueue(1); fifo.enqueue(3); fifo.enqueue(8); cout << fifo.dequeue() << endl; cout << fifo.dequeue() << endl; if (fifo.isempty()) cout << "现在FIFO为空" << endl; cout << fifo.dequeue() << endl; if (fifo.isempty()) cout << "现在FIFO为空" << endl; system("pause"); return 0; }
版权声明: