我一直在阅读C++ 实用C++编程一书,并遇到了一些名为Stacks的东西.在书中定义,它被定义为用于存储数据的算法.
从我在书中看到的,它看起来很像装配......我还记得读过一些关于16位的东西.
所以我的问题是:什么是堆栈用于,它们仍然有用,或者它是一种做旧的方法,可以使用32/64位计算机更简单有效地完成?我真的很困惑堆栈服务的目的.
编辑:由于我的问题是如此模糊,我会改写它...什么是堆栈,什么时候应该使用它.
取决于你在谈论哪个堆栈.
第一个是内存中的存储位置.
堆栈是一种后进先出数据结构,无论16/32/64位计算机如何,它仍然非常有用.
正如其他人所说的那样,调用堆栈(或"堆栈")是堆栈运行的一个例子.
堆栈不是一种方法,而是一种数据结构,后进先出(LIFO).
在C++中,std::stack<>是一个类模板,其数据可以是任何类型.在许多情况下,后进先出正是您所需要的.
一个示例是虚拟机或解释器,其利用堆栈架构来在执行功能/过程期间保存运行状态.请考虑以下语言的解释器,其中子过程可能不会更改调用者的状态:
std::stack<RunState> state;
Instruction i = fetch();
switch (i.type()) {
case Instruction.Call:
state.push (state.top());
break;
case Instruction.Return:
state.pop();
break;
...
}
Run Code Online (Sandbox Code Playgroud)
维基百科有更多使用堆栈数据结构的示例.使用堆栈可以相对容易地解决一些排序问题.
与所有数据结构一样,C++中有相当一部分(列表,队列,集合,映射(也称为关联数组,也就是字典),数组/向量等),您现在可能不需要它们,甚至可能不需要它们几年,但你应该了解它们,它们的性质,优点,缺点,以及什么时候使用它们.
| 归档时间: |
|
| 查看次数: |
9186 次 |
| 最近记录: |