C++ STL 中栈的操作与数据结构简介
"这篇文章主要介绍了C++ STL中的栈(stack)容器及其常用操作,同时提到了其他STL容器如set的基本操作。" 在C++ STL(Standard Template Library,标准模板库)中,栈(stack)是一种后进先出(LIFO,Last In First Out)的数据结构,通常用于临时存储数据,其操作类似于现实生活中的堆叠物品。栈提供了一些基本的操作,这些操作使得它在编程中非常实用。以下是对栈主要操作的详细说明: 1. **size()**: 这个函数返回栈中当前元素的数量。它可以帮助我们了解栈中还有多少个未处理的元素。 2. **empty()**: 这个函数用于检查栈是否为空。如果栈中没有任何元素,它会返回`true`,否则返回`false`。这是检查栈状态的常见方法。 3. **push(item)**: 这个操作将一个新元素`item`压入栈顶,即添加到栈的顶部。这使得`item`成为新的栈顶元素。 4. **top()**: `top()`函数返回栈顶元素的值,但不会移除它。这是查看栈顶元素而不会破坏栈结构的方式。 5. **pop()**: `pop()`操作移除并返回栈顶元素。执行此操作后,原来的栈顶元素将不再存在于栈中。 6. **s1.swap(s2)**: 这个函数用于交换两个栈`s1`和`s2`的元素。栈内的元素顺序会互换,但不会改变它们各自的大小。 7. **s1 == s2**: 这是用于比较两个栈是否相等的运算符。如果两个栈具有相同的元素,并且顺序相同,它们被认为是相等的。 除了栈,STL还包含其他容器,如`set`,它是一个集合容器,存储唯一的元素。以下是`set`的一些基本操作: - **begin()**: 返回集合的第一个元素的迭代器。 - **clear()**: 移除集合中的所有元素,使其变得空。 - **count()**: 返回集合中特定元素的出现次数。 - **empty()**: 如果集合为空,返回`true`,否则返回`false`。 - **end()**: 返回集合的最后一个元素之后的迭代器。 - **equal_range()**: 返回一个范围,该范围内包含了与指定元素相等的所有元素。 - **erase()**: 删除集合中指定的元素或范围内的元素。 - **find()**: 查找集合中是否存在指定的元素,并返回其迭代器。 - **get_allocator()**: 返回集合使用的分配器对象。 - **insert()**: 在集合中插入新的元素。 - **lower_bound()**: 返回第一个大于或等于指定值的元素的迭代器。 - **key_comp()**: 获取用于排序集合中元素的比较函数。 - **max_size()**: 返回集合可以包含的最大元素数量。 - **rbegin()**: 返回逆向迭代器,指向集合的最后一个元素。 - **rend()**: 返回逆向迭代器,指向集合的前一个元素。 - **size()**: 返回集合中元素的数量。 - **swap()**: 交换两个集合的内容。 - **upper_bound()**: 返回第一个大于指定值的元素的迭代器。 - **value_comp()**: 获取用于比较集合中元素值的比较函数。 STL容器如set、list、map等提供了丰富的操作,使程序员能够灵活地管理和操作数据。正确理解和使用这些容器可以大大提高C++代码的效率和可维护性。
操作:
size() 返回实际个数
empty() 判断是否为空
push(item) 压栈
top() 返回栈顶元素
pop() 将栈顶元素删除
s1.swap(s2) 将两个栈元素交互
s1 == s1 判断是否相等
所有的STL容器
容器(Container)的概念的出现早于模板(template),它原本是一个计算机科学领域中的一个重要概念,但在这里,它的概念和STL混合在一起了。下面是在STL中出现的7种容器:
vector(向量)――STL中标准而安全的数组。只能在vector 的“前面”增加数据。
deque(双端队列double-ended queue)――在功能上和vector相似,但是可以在前后两端向其中添加数据。
list(列表)――游标一次只可以移动一步。如果你对链表已经很熟悉,那么STL中的list则是一个双向链表(每个节点有指向前驱和指向后继的两个指针)。
set(集合)――包含了经过排序了的数据,这些数据的值(value)必须是唯一的。
map(映射)――经过排序了的二元组的集合,map中的每个元素都是由两个值组成,其中的key(键值,一个map中的键值必须是唯一的)是在排序或搜索时使用,它的值可以在容器中重新获取;而另一个值是该元素关联的数值。比如,除了可以ar[43] = "overripe"这样找到一个数据,map还可以通过ar["banana"] = "overripe"这样的方法找到一个数据。如果你想获得其中的元素信息,通过输入元素的全名就可以轻松实现。
multiset(多重集)――和集合(set)相似,然而其中的值不要求必须是唯一的(即可以有重复)。
multimap(多重映射)――和映射(map)相似,然而其中的键值不要求必须是唯一的(即可以有重复)。
set的各成员函数列表如下:
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦