在Vector STL中,堆栈是使用容器适配器实现的,容器适配器重写了C++类的接口。然而,既然已经有了Vector类,为什么还要重写接口并设计Stack类呢?是否出于成本效益,即维护堆栈使用较少的资源,而它可以完成所有必要的工作?
发布于 2021-09-06 10:51:11
既然我们已经有了更强大的goto,为什么我们还需要for循环和while循环呢?你应该坚持简约的原则--使用功能最弱的工具来实现所需的目标。
如果您需要的是堆栈,则依赖于提供该功能的标准库类,而不是更强大的功能。它还能更好地与阅读你的代码的人交流你要做的事情。
发布于 2021-09-06 10:45:56
容器适配器背后的思想是在其他开放的容器类型上强制使用特定的抽象数据类型。如果您有一个std::vector,可能会无意中在中间插入/擦除/访问元素;但是如果您有一个std::stack,您就知道这不会发生。它类似于const:告诉编译器应用什么限制,这样当您无意中违反了这些限制时,它就会告诉您。
我知道,人们并不经常使用stack和queue。priority_queue更有用一点。但在每种情况下,人们往往会发现一些奇怪的特殊情况,其中您需要打破一些规则,这意味着放弃过于原则的容器适配器。
https://stackoverflow.com/questions/69073206
复制相似问题