栈的实现–stack
stack是一种先进后出(Frist In Last Out)的容器,stack容器只能对栈顶元素进行操作。因此需注意的是stack容器是不支持遍历的。但是栈可以返回栈中元素个数 size(),在进行入栈和出栈时记录元素个数,同时栈中还存在判空操作 empty();
stack图示:
stack相关操作:
构造函数
stack容器中封装了两个构造函数,无参构造函数和有参的拷贝构造函数
//stack<T> stk;
//stak(const stack& stk);
stack<int> stk1;
for (int i = 0; i < 10; i++)
{
stk1.push(i + 1);
}
stack<int>stk2(stk1);
stack容器在使用是头文件需包含进来
#include<stack>
赋值操作
//stack& operator=(const stack& stk);//重载=赋值操作
stack<int> stk3 = stk1;
数据存取
push(elem);//压栈
pop();//弹栈
top();//返回栈顶元素
while (!stk1.empty())
{
cout << stk1.top() << " ";
stk1.pop();
}
//输出为:10 9 8 7 6 5 4 3 2 1
- deque& operator=(deque& deqT);//重载operator=运算符
deque<int>deqT1;
T1.push_back(1);
deque<int>deqT2;
deqT2 = deqT1;
大小操作
empty();
size();
if (stk1.empty())
{
cout << "stk1已经是空的了" << endl;
}
cout << stk3.size() << endl;//10
队列实现–queue
队列与栈正相反,队列是一种先进先出(frist in frist out)的容器,它只允许在一端进行插入操作,另一端进行删除操作,队列中只有队头和队尾元素能够被外界获取,并且队列容器不能进行遍历操作。
队列图示:
队列相关操作
构造函数
/*
构造函数
queue<T>que;
queue(const queue<T>& que);
*/
queue<int> que1;
que1.push(1);
que1.push(2);
que1.push(3);
que1.push(4);
queue<int>que2(que1);
赋值操作
/*
赋值操作
queue& operator=(queue<T>& que);
*/
queue<int>que3;
que3 = que2;
while (!que3.empty())
{
cout << que3.front() << " ";//1 2 3 4
que3.pop();
}
数据存取
/*
数据存取
push(elem);//将elem进入队尾
pop();//弹出队首元素
front();//获取队头元素
back();//获取队尾元素
*/
while (!que2.empty())
{
cout << "队头元素为:" << que2.front() << endl;
cout << "队尾元素为:" << que2.back() << endl;
que2.pop();
}
大小操作
/*
大小操作
empty();//判空操作
size();//返回queue容器中元素个数
*/
if(!que2.empty())
{
******
}
cout << "队列元素为:" << que2.size() << endl;