首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >stack.size()与stack.empty()

stack.size()与stack.empty()
EN

Stack Overflow用户
提问于 2020-05-09 10:12:08
回答 1查看 147关注 0票数 0

要检查堆栈是否为空,我们可以使用if(stack.size())。那为什么我们有stack.empty()

是否有任何条件,这些结果可能不同,或有任何优势,使用一个比另一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 10:33:15

从某种程度上说,这是一个风格的选择,

就我个人而言,我认为依赖隐式bool转换应该仅限于具有指针类语义的事物:实际指针、智能指针、std::optional。在这种情况下,它无处不在,感觉很自然。

在其他情况下,感觉怪怪的。尽可能清楚地表达你的意图!在我看来,if(!stack.empty())if(stack.size())更清楚、更直接地传达意图。

然而,风格并不是故事的全部。如果您使用size样式作为一般规则,它可能会成为性能问题的,因为您依赖于size()empty()来保持同样的速度。

想象一下没有存储其大小的链接列表类型。它的empty()函数仍然是快速的,因为它相当于检查单个指针。但是它的size()必须遍历整个列表来确定条目的数量。这可能是一项昂贵得多的手术。

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

https://stackoverflow.com/questions/61695064

复制
相关文章

相似问题

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