zoukankan      html  css  js  c++  java
  • 栈stack

    中文标准库:std::stack

    C++内存中的堆和栈

    FILO:First In Last Out(先进后出)

    栈是适配器

    1.构造

    stack构造不能直接使用初始化列表 std::initializer_list,可以使用其他容器初始化stack,使用std::deque不需要指定容器,使用其他容器(例如:std::vector)需要指定容器。

    	std::deque<int> myDeque(3, 5);
    	std::vector<int> myVector(2, 4);
    	std::list<int> myList(3, 3);
    
    	//std::stack<int> s1{ 1,2,3 }; //error
    	std::stack<int> s2(myDeque);   //s2 = 5,5,5
    	//std::stack<int> s3(myList);  //error
    	std::stack<int, std::list<int>> s4(myList);     //s4 = 3,3,3
    	//std::stack<int> s5(myVector);//error
    	std::stack<int, std::vector<int>> s6(myVector); //s6 = 4,4
    

    2.访问栈顶元素(只能访问栈顶元素)

    auto ret = myStack.top() //top()返回栈顶元素

    如果访问的栈为空,则会中断,因此使用top()前一定要保证该栈不为空

    3.添加

    std::stack<int> s7;
    s7.emplace(2); //在栈顶插入一个元素2
    s7.push(5);    //在栈顶插入一个元素5
    

    4.删除

    myStack.pop(); //删除栈顶元素

    如果删除的栈为空,则会中断,因此使用pop()之前要保证该栈不为空

    5.其他

    • 返回栈的大小

    size()

    • 栈是否为空

    empty()

    • 两个栈互相交换

    必须是两个类型相同的栈才能交换,用std::vector初始化的stack不能和std::deque初始化的stack交换

    swap(stack& other)

    完整示例代码

    #include <stack>
    #include <vector>
    #include <deque>
    #include <list>
    
    int main()
    {
    	std::deque<int> myDeque(3, 5);
    	std::vector<int> myVector(2, 4);
    	std::list<int> myList(3, 3);
    
    	//std::stack<int> s1{ 1,2,3 }; //error
    	std::stack<int> s2(myDeque);   //s2 = 5,5,5
    	//std::stack<int> s3(myList);  //error
    	std::stack<int, std::list<int>> s4(myList);     //s4 = 3,3,3
    	//std::stack<int> s5(myVector);//error
    	std::stack<int, std::vector<int>> s6(myVector); //s6 = 4,4
    
    
    	std::stack<int> s7;
    	s7.emplace(2); //在栈顶插入一个元素2
    	s7.push(5);    //在栈顶插入一个元素5
    
    	s7.pop();
    
    	bool IsEmpty = s7.empty();  //false
    	size_t Size = s7.size();    //1
    
    	s2.swap(s7);
    	//s6.swap(s4); //error
    
    	return 0;
    }
    
  • 相关阅读:
    Codeforces466C Number of Ways
    hdu 4902 Nice boat--2014 Multi-University Training Contest 4
    怎样免费设置QQ空间背景音乐
    “小懒虫”安卓手机控制电脑关机
    js和jquery实现回到顶层
    机器学习概念
    HDU 4786(最小生成树 kruskal)
    算法----堆排序(heap sort)
    openfireserver和jdk环境删除命令
    POI操作Excel导入和导出
  • 原文地址:https://www.cnblogs.com/mmmmmmmmm/p/15329435.html
Copyright © 2011-2022 走看看