stack容器和queue容器

本文深入探讨了stack和queue两种容器的特性与使用方法,stack遵循先进后出原则,适用于需要最后添加的元素最先处理的场景;queue遵循先进先出原则,适合于需要按顺序处理元素的场景。文章详细介绍了这两种容器的常用API,包括构造函数、数据存取、大小操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stack容器

stack容器基本概念
stack是一种先进后出(first in last out,FILO)的数据结构,它只有一个出口,stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素,换言之,stack不允许有遍历行为。
有元素推入栈的操作成为push,将元素推出stack的操作成为pop
stack没有迭代器
stack所有元素的进出都必须符合先进后出的条件,只有stack顶端的元素,才有机会被外界取用,stack不提供遍历功能,也不提供迭代器

stack常用API
stack构造函数:
stackstkT //stack采用模板类实现,stack对象的默认构造形式
stack(const stack &stk); //拷贝构造函数

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

stack数据存取操作
push(elem); //向栈顶添加元素
pop(); //从栈顶移除第一个元素
top(); //返回栈顶元素

stack大小操作
empty(); //判断堆栈是否为空
size(); //返回堆栈的大小

void test1()
	{
		stack<int>s;

		//放入数据
		s.push(10);
		s.push(324);
		s.push(32);
		s.push(143);
		s.push(435);
		while(s.size() != 0)
			{
				cout << "栈顶为:" << s.top() << endl;
				//弹出栈顶元素
				s.pop();
			}
		cout << s.size() << endl;
	}

在这里插入图片描述

queue容器

queue容器的基本概念
queue是一种先进先出(first in first out,FIFO)的数据结构,它有两个出口,queue容器允许从一段新增元素,从另一端移除元素

queue没有迭代器
queue所有元素的进出都必须符合先进先出的条件,只有queue的顶端元素,才有机会被外界取用,queue不提供遍历功能,也不提供迭代器。
queue常用API
queue构造函数:
queuequeT; //采用模板类实现,queue对象的默认构造形式
queue(const queue &que); //拷贝构造函数

queue存取、插入和删除操作:
push(elem); //往队尾添加元素
pop(); //从队头移除第一个元素
back(); //返回最后一个元素
front(); //返回第一个元素

queue赋值操作:
queue & operator=(const queue &que) //重载等号操作符

queue大小操作:
empty(); //判断队列是否为空
size(); //返回队列的大小

void test2()
	{
		queue<int>q;
		q.push(10);
		q.push(50);
		q.push(20);
		q.push(30);
		q.push(70);
		while(!q.empty())
			{
			cout << "队头:" << q.front() << "  队尾:" << q.back() << endl;
			//弹出元素
			q.pop();
			}
		cout << q.size() << endl;
	}

在这里插入图片描述

### C++ 中 `stack` `queue` 容器的支持操作 #### 一、`stack` 容器常用操作及方法列表 `stack` 是一种后进先出(LIFO, Last In First Out)的数据结构,在 C++ STL 中实现为容器适配器。以下是其支持的主要操作: 1. **构造与析构** - 默认构造函数用于创建一个新的栈对象。 - 析构函数自动释放资源。 2. **核心功能操作** - `push(element)`:向栈顶添加一个新元素[^1]。 ```cpp std::stack<int> s; s.push(10); ``` - `pop()`:移除栈顶的元素,不返回任何值。 ```cpp s.pop(); ``` 3. **访问栈顶元素** - `top()`:返回栈顶元素的引用,但不会删除该元素。 ```cpp int topElement = s.top(); ``` 4. **状态查询** - `empty()`:如果栈为空,则返回 `true`;否则返回 `false`。 ```cpp if (s.empty()) { // 栈为空 } ``` - `size()`:返回当前栈中的元素数量。 ```cpp size_t count = s.size(); ``` 5. **赋值操作** - 使用重载的等号操作符可以完成深拷贝[^3]。 ```cpp std::stack<int> s1; s1.push(10); std::stack<int> s2 = s1; // 复制 s1 到 s2 ``` --- #### 二、`queue` 容器常用操作及方法列表 `queue` 是一种先进先出(FIFO, First In First Out)的数据结构,在 C++ STL 中同样作为容器适配器存在。以下是其主要操作: 1. **构造与析构** - 默认构造函数用于创建新的队列对象。 - 析构函数负责清理内存并释放资源。 2. **核心功能操作** - `push(element)` 或 `emplace(args...)`:在队列尾部插入一个新元素[^2]。 ```cpp std::queue<int> q; q.push(20); ``` - `pop()`:移除队首的元素,不返回任何值。 ```cpp q.pop(); ``` 3. **访问队列两端元素** - `front()`:返回队首元素的引用,但不会删除该元素。 ```cpp int frontElement = q.front(); ``` - `back()`:返回队尾元素的引用,但不会删除该元素。 ```cpp int backElement = q.back(); ``` 4. **状态查询** - `empty()`:如果队列为空,则返回 `true`;否则返回 `false`。 ```cpp if (q.empty()) { // 队列为空 } ``` - `size()`:返回当前队列中的元素数量。 ```cpp size_t count = q.size(); ``` 5. **赋值操作** - 使用重载的等号操作符可以完成深拷贝[^4]。 ```cpp std::queue<int> q1; q1.push(30); std::queue<int> q2 = q1; // 复制 q1 到 q2 ``` --- ### 总结 无论是 `stack` 还是 `queue`,它们都提供了简单的接口来管理数据流,并通过底层容器(默认为 `deque`)实现了高效的操作性能[^5]。两者的区别在于逻辑上的存取顺序不同——前者遵循 LIFO,后者则基于 FIFO。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值