• 栈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;
    }
    
  • 相关阅读:
    关于自定义UICollectionViewLayout的一点个人理解<一>
    自定义进度条
    iOS 无限轮播图的两种实现
    图片的拉伸
    关于plist文件
    加载gif图过渡效果
    关于textView的字数限制
    php-fpm服务启动脚本
    转载:PHP支付宝接口RSA验证
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/mmmmmmmmm/p/15329435.html
Copyright © 2020-2023  润新知