1、std::stack使用方式:
#include <stack>
// stack 构造 :
1. stack<Typename T> s;
2. stack<Typename T, Container> s;
/* stack 的 Container 需要满足有如下接口 :
* back()
* push_back()
* pop_back()
* 标准容器 std::vector / deque / list 满足这些要求
* 如使用 1 方式构造,默认容器使用 deque
*/
2、相关操作:
std::stack
支持赋值运算符=
元素访问:
s.top()
返回栈顶容量:
s.empty()
返回是否为空
s.size()
返回元素数量修改:
s.push()
插入传入的参数到栈顶
s.pop()
弹出栈顶其他运算符:
==
、!=
、<
、<=
、>
、>=
可以按照字典序比较两个stack
的值
3、代码示例:
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> s;//创建一个整型栈
for (int i = 1; i <= 10; i++)
{
s.push(i);//将1~10的数字放入栈中
}
cout <<"The stack number of elements is :"<< s.size() << endl;
for (int j = 1; j <= 10; j++)
{
cout << s.top() << ' ';
s.pop(); //将1~10的数字从栈中弹出
}
cout << endl <<"The stack number of elements is :"<< s.size() << endl;
return 0;
}
4、运行结果:
5、示例2:
题目1(自创仅练习使用):应用STL中的stack模板编写函数实现十进制数转换成其他进制数:
输入样例1:
输入一个十进制数:2
输入要转换的进制:8
这是它的8进制转换:2
输入样例2:输入一个十进制数:15
输入要转换的进制:7
这是它的7进制转换:21
实现程序代码:
#include<iostream>
#include<stack>
using namespace std;
void HexadecimalConversion(int Original,int Final)//十进制转换任意进制函数
{
stack<int> stack;
int quotient;//商数
int remainder;//余数
bool isContinue = true;
while (isContinue)
{
if (Original >= Final)
{
quotient = Original / Final;
remainder = Original % Final;
stack.push(remainder);
Original = quotient;
if (quotient < Final)
{
stack.push(quotient);
isContinue = false;
}
}
else
{
cout << Original;
isContinue = false;
}
}
while (!stack.empty()) {
cout<<stack.top();
stack.pop();
}
}
int main()
{
int Original;
int Final;
cout << "输入一个十进制数:";
cin >> Original;
cout << "输入要转换的进制:";
cin >> Final;
cout << "这是它的" << Final << "进制转换:";
HexadecimalConversion(Original,Final);
return 0;
}