首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >既然我们已经有了更强大的向量,为什么我们还需要堆栈呢?

既然我们已经有了更强大的向量,为什么我们还需要堆栈呢?
EN

Stack Overflow用户
提问于 2021-09-06 10:42:40
回答 2查看 97关注 0票数 2

在Vector STL中,堆栈是使用容器适配器实现的,容器适配器重写了C++类的接口。然而,既然已经有了Vector类,为什么还要重写接口并设计Stack类呢?是否出于成本效益,即维护堆栈使用较少的资源,而它可以完成所有必要的工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-06 10:51:11

既然我们已经有了更强大的goto,为什么我们还需要for循环和while循环呢?你应该坚持简约的原则--使用功能最弱的工具来实现所需的目标。

如果您需要的是堆栈,则依赖于提供该功能的标准库类,而不是更强大的功能。它还能更好地与阅读你的代码的人交流你要做的事情。

票数 8
EN

Stack Overflow用户

发布于 2021-09-06 10:45:56

容器适配器背后的思想是在其他开放的容器类型上强制使用特定的抽象数据类型。如果您有一个std::vector,可能会无意中在中间插入/擦除/访问元素;但是如果您有一个std::stack,您就知道这不会发生。它类似于const:告诉编译器应用什么限制,这样当您无意中违反了这些限制时,它就会告诉您。

我知道,人们并不经常使用stackqueuepriority_queue更有用一点。但在每种情况下,人们往往会发现一些奇怪的特殊情况,其中您需要打破一些规则,这意味着放弃过于原则的容器适配器。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69073206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档