update stack

This commit is contained in:
JerryQiang
2019-08-29 15:17:45 +08:00
parent d393f6fc60
commit 5be4e979ad

View File

@@ -232,7 +232,7 @@ Java 的单继承结构有很多好处。由于所有对象都具有一个公共
还好,一般优秀的 OOP 语言都会将“集合”作为其基础包。在 C++ 中,“集合”是其标准库的一部分,通常被称为 STLStandard Template Library标准模板库。SmallTalk 有一套非常完整的集合库。同样Java 的标准库中也提供许多现成的集合类。
在一些库中一两个泛型集合就能满足我们所有的需求了而在其他一些类库Java不同类型的集合对应不同的需求常见的有 List常用于保存序列Map也称为关联数组常用于将对象与其他对象关联Set只能保存非重复的值其他还包括如队列Queue、树Tree、栈Stack等等。从设计的角度来看我们真正想要的是一个能够解决某个问题的集合。如果一种集合就满足所有需求那么我们就不需要剩下的了。之所以选择集合有以下两个原因
在一些库中一两个泛型集合就能满足我们所有的需求了而在其他一些类库Java不同类型的集合对应不同的需求常见的有 List常用于保存序列Map也称为关联数组常用于将对象与其他对象关联Set只能保存非重复的值其他还包括如队列Queue、树Tree、栈Stack、堆Heap等等。从设计的角度来看,我们真正想要的是一个能够解决某个问题的集合。如果一种集合就满足所有需求,那么我们就不需要剩下的了。之所以选择集合有以下两个原因:
1. 集合可以提供不同类型的接口和外部行为。堆栈、队列的应用场景和集合、列表不同,它们中的一种提供的解决方案可能比其他灵活得多。
@@ -260,7 +260,7 @@ Java 的单继承结构有很多好处。由于所有对象都具有一个公共
现在问题开始棘手了:我们怎么知道何时该清理这些对象呢?当某一个系统处理完成,而其他系统可能还没有处理完成。这样的问题在其他的场景下也可能发生。在 C++ 程序设计中,当使用完一个对象后,必须明确将其删除,这就让问题变复杂了。
对象的数据在哪?它的生命周期是怎么被控制的? 在 C++ 设计中采用的观点是效率第一,因此它将选择权交给了程序员。为了获得最大的运行时速度,程序员可以在编写程序时,通过将对象放在Stack有时称为自动变量或作用域变量或静态存储区域static storage area中来确定内存占用和生存时间。这些区域的对象会被优先分配内存和释放。这种控制在某些情况下非常有用。
对象的数据在哪?它的生命周期是怎么被控制的? 在 C++ 设计中采用的观点是效率第一因此它将选择权交给了程序员。为了获得最大的运行时速度程序员可以在编写程序时通过将对象放在栈Stack有时称为自动变量或作用域变量或静态存储区域static storage area中来确定内存占用和生存时间。这些区域的对象会被优先分配内存和释放。这种控制在某些情况下非常有用。
然而相对的,我们也牺牲了程序的灵活性。因为在编写代码时,我们必须要弄清楚对象的数量、生存时间还有类型。如果我们要用它来解决一个相当普遍的问题时(如计算机辅助设计、仓库管理或空中交通管制等),限制就太大了。