C++学习笔记--STL标准模板库的认识与使用--序列式容器--stack(栈)

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;
}


 

猜你喜欢

转载自blog.csdn.net/qq_51701007/article/details/121246106