C++ Stack2025 年 8 月 29 日 | 阅读 9 分钟 在 C++ 中,栈 是一种线性数据结构,它遵循“后进先出”(LIFO)的原则进行操作。这意味着最后添加的元素最先被移除,而最先添加的元素最后被移除。在 C++ 中,STL 提供了一个栈容器适配器,可以高效地执行 LIFO 操作。它包含所有标准功能,如 push、pop、size、top、empty 等。 ![]() 栈中的元素不能通过索引访问。由于元素是从顶部添加和移除的,我们只能访问栈顶的元素。 语法它具有以下语法: 在这个语法中,
C++ 栈示例让我们通过一个例子来说明 C++ STL 中的栈。 示例编译并运行输出 Top element of the list: 25 After pop, top element: 20 Size of Stack: 2 Is stack empty? No 说明 在此示例中,我们演示了 STL 栈容器的基本操作。我们将三个整数压入栈中,并使用 top() 访问最后插入的元素 (25),然后使用 pop() 将其移除。之后,程序显示更新后的栈顶元素,检查栈的大小,并验证栈是否为空。 C++ 栈的基本操作以下是可以对栈执行的基本操作: 插入元素在 C++ 栈中,我们可以使用 push() 方法轻松地将新元素插入到栈顶。不可能将元素插入到栈中的其他位置。 语法 它具有以下语法: C++ 插入元素示例 让我们通过一个例子来说明如何在 C++ 栈中插入元素。 示例编译并运行输出 Cherry Banana Apple 说明 在此示例中,我们初始化一个字符串栈,并添加“Apple”、“Banana”和“Cherry”。之后,它打印并弹出栈顶的每个元素,直到栈为空。输出将是 Cherry Banana Apple,这展示了栈的后进先出特性。 访问元素在 C++ 栈中,我们只能使用 top() 方法访问栈顶元素。我们无法访问栈中的任何中间元素。 语法 它具有以下语法: C++ 访问元素示例 让我们通过一个例子来说明如何在 C++ 栈中访问元素。 示例编译并运行输出 Top element: 30 说明 在此示例中,我们包含所有必需的头文件,并声明一个名为 myStack 的栈来存储整数。值 10、20 和 30 按此顺序压入栈中。由于栈是 LIFO(后进先出),压入的最高元素将是 30。调用 top() 函数以检索此顶部元素而不将其移除,并将其打印到控制台,显示为 Top element: 30。 删除元素在一次操作中,只能使用 pop() 方法移除栈的最后一个元素。如果要移除任何其他元素,则需要先移除在该元素之后添加的所有元素。 语法 它具有以下语法: C++ 删除元素示例 让我们通过一个例子来演示如何在 C++ 栈中删除元素。 示例编译并运行输出 Top Element Before Deletion: 300 Top Element After Deletion: 200 说明 在此示例中,我们将 100、200 和 300 放入栈中。之后,它使用 pop() 弹出(移除)栈顶元素 300,并打印新的栈顶元素 200。 伪遍历由于栈中除了栈顶元素之外的任何元素都无法访问,因此无法对其进行遍历。但是,我们可以对其进行复制,访问栈顶元素并移除它。通过这样做直到复制的栈变空,我们可以有效地遍历而不改变原始栈。 语法 它具有以下语法: C++ 伪遍历示例 让我们通过一个例子来说明 C++ 栈中的伪遍历。 示例编译并运行输出 23 46 19 35 说明 在此示例中,我们声明一个栈并将四个整数压入栈中。之后,它将 st 复制到 temp 以保持原始栈不变。最后,它使用 while 循环弹出并打印 temp 中的每个栈顶元素,得到输出:23 46 19 35,这是栈从顶到底的内容。 检查栈是否为空在 C++ 栈中,我们使用 empty() 方法来测试栈是否为空。empty() 方法返回
语法 它具有以下语法: 检查 C++ 栈是否为空的示例 让我们通过一个例子来说明如何在 C++ 栈中检查栈是否为空。 示例编译并运行输出 Stack is empty. Stack is not empty. 说明 在此示例中,我们初始化一个空栈并通过 empty() 检查它是否为空,并打印一条消息。之后,它将 10 压入栈中,并再次检查。开始时,它打印“Stack is empty。”,压入后,它打印“Stack is not empty.”。 示例:一个简单的程序,展示基本栈函数的使用让我们通过另一个例子来说明 C++ 栈中的基本栈函数。 示例编译并运行输出 The stack newst is : 11 22 33 44 55 newst.size() : 5 newst.top() : 11 newst.pop() : 22 33 44 55 说明 在此示例中,我们创建一个 newstack() 函数来显示栈而不改变原始栈。在 main() 函数中,它将五个整数插入到 newest 中,打印其内容、大小和栈顶元素,然后弹出栈顶元素并打印新的栈。输出显示栈从底部到顶部:11 22 33 44 55,弹出后:22 33 44 55。 时间复杂度 下表列出了栈操作的时间复杂度
成员类型下面是栈成员类型及其简要描述的列表。
函数借助函数,可以在编程领域中操作对象或变量。栈提供了大量可以嵌入到程序中的函数。以下是其中一个列表
结论总之,C++ 栈是一种基于后进先出 (LIFO) 原则工作的多功能数据结构。通过使用 std::stack 容器适配器,元素只能在顶部添加或移除。 Push()、pop()、top()、empty() 和 size() 是基本栈操作。尽管未提供直接遍历,但通过复制进行伪遍历可用于显示元素。栈在递归算法、表达式求值和回溯问题中非常有用,因为它们提供了受控访问。 C++ 栈选择题1) 栈的底层原理是什么?
答案: c) LIFO (Last In First Out) 2) 以下哪个函数用于将元素添加到栈顶?
答案: b) push() 3) top() 函数在栈中会返回什么?
答案: d) Element at the top 4) 以下哪个函数移除栈顶元素?
答案: c) pop() 5) empty() 函数做什么?
答案: a) Checks if the stack is empty 下一主题C++ Set |
在 C++ 中,队列代表基本数据结构,它们根据先进先出(FIFO)逻辑运行。C++ 的标准模板库(STL)通过其现成的组件提供了一个队列类,这些组件可提高队列操作的效率。队列是一种线性数据结构,它通过队列处理元素……
11 分钟阅读
教程 编译器 程序 面向对象编程 STL 面试题 C++ STL (标准模板库) 在 C++ 中,标准模板库 (STL) 是一组强大的模板类和函数,提供了通用的数据...
阅读 13 分钟
C++ STL Set 在 C++ 中,set 代表基本数据结构,它以某种排序顺序排列唯一元素并存储它们。集合称为关联容器,唯一排序的元素称为排序键。我们可以插入或……
阅读9分钟
在 C++ 中,std::list 是一个序列容器,它允许元素的非连续存储。它实现为双向链表,其中每个元素包含前一个和后一个列表元素的地址。它允许我们将数据存储在……
阅读 15 分钟
在 C++ 中,deque(双端队列)是一种队列,其中可以在队列的前端和后端添加和删除元素。它支持 FIFO 和 LIFO 操作,这比队列提供了更大的灵活性。在 C++ 中,STL deque 是一个序列容器,它……
11 分钟阅读
在 C++ 中,priority_queue 是 STL 中的一个派生容器,它只考虑优先级最高的元素。队列遵循 FIFO 原则,而 priority_queue 根据优先级弹出元素,即最高优先级的元素首先弹出。它类似于……
阅读 10 分钟
在 C++ 中,multimap 是 C++ STL(标准模板库)的一部分。Multimap 是像 map 一样的关联容器,它们存储排序的键值对,但与只存储唯一键的 map 不同,multimap 可以有重复的键。默认情况下,它使用 (<) 运算符进行比较……
阅读 13 分钟
函数 C++ 中,标准模板库 (STL) 在 <<algorithm> 头文件中提供了强大的底层函数集合。这些函数有助于对数组、向量、列表和其他容器等序列执行各种操作。算法函数是通用的,并且操作迭代器,...
阅读 24 分钟
在 C++ 中,bitset 是一个包含固定大小位序列(0 和 1)的容器。它使我们能够有效地管理和操作固定大小的位序列。它适用于低级操作、内存高效存储和位逻辑。它实现为……
11 分钟阅读
s 在 C++ 中,vector 是标准模板库(STL)的一部分。它们是动态数组,在添加或删除元素时可以自动调整大小。与具有固定大小的数组不同,vector 提供了广泛的灵活性和底层函数,这些函数……
11 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India