欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 14-7C++STL的stack容器

14-7C++STL的stack容器

2025/1/29 12:38:15 来源:https://blog.csdn.net/2402_86622585/article/details/145371107  浏览:    关键词:14-7C++STL的stack容器

(一)stack容器的入栈与出栈

(1)stack容器的简介

stack堆栈容器,“先进后出”的容器,且stack没有迭代器

(2)stack对象的默认构造
stack采用模板类实现,stack对象的默认构造形式stack <T> s;
1.stack <int> stklnt;//一个存放int的stack容器
2.stack <float> stkFloat;//ー个存放float的stack容器
3.stack <string>stkString;//一个存放string的stack容器

stack的push()与pop()方法

stack.push(elem);//栈头添加元素;stack.pop()//栈头移除第一个元素

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> stk;
    stk.push(1);
    stk.push(2);
    stk.push(3);
    stk.push(4);
    stk.push(5);

    cout << stk.top() << endl; //top函数返回栈顶元素,不会删除栈顶元素
    stk.pop(); //出栈,删除栈顶元素

    cout << stk.top() << endl; 
    stk.pop(); 

    return 0;
}

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> stk;
    stk.push(1);
    stk.push(2);
    stk.push(3);
    stk.push(4);
    stk.push(5);
    while(stk.empty() !=true)
    {
        cout<<stk.top() <<endl;
        stk.pop();
    }

    return 0;
}


(二)stack容器的拷贝构造方法

1.stack(const stack &stk);//拷贝构造函数

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> stk;
    stk.push(1);
    stk.push(2);
    stk.push(3);
    stk.push(4);
    stk.push(5);
    stack<int> stk1(stk);
    while(stk1.empty() !=true)
    {
        cout<<stk1.top()<<endl;
        stk1.pop();
    }
    return 0;
}

2.stack&operator=(const stack &stk);//重载等号操作符

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> stk;
    stk.push(1);
    stk.push(2);
    stk.push(3);
    stk.push(4);
    stk.push(5);
    stack<int> stk1(stk);
    while(stk1.empty() !=true)
    {
        cout<<stk1.top()<<endl;
        stk1.pop();
    }
    stack<int>stk2=stk;
    stk2=stk;
    return 0;
}


(三)stack的大小

stack.empty();//判断堆栈是否为空

stack.size();//返回堆栈的大小

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    stack<int> stk;
    stk.push(1);
    stk.push(2);
    stk.push(3);
    stk.push(4);
    stk.push(5);
    cout<<"stk size:"<<stk.size()<<endl;
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com