【发布时间】:2017-09-15 23:20:36
【问题描述】:
以下哪项检查容器是否为空最有效? 假设“c”是 C++ Containers 库的任何容器部分
1. c.begin()==c.end()
2. c.empty()
3. c.size()==0
在 2 的情况下,文档显示“Checks if the container has no elements,ie是否begin() == end()”但没有说明是否empty() 实现为 begin() == end()。那么,empty() 究竟是如何实现的呢?
为什么会这样?
sizeof(c) == 0
【问题讨论】:
-
因为
sizeof是对象的大小而不是元素的数量,也请不要在没有展示您当前的尝试和理解的情况下在这里发布您的测验/作业问题 -
调用
empty()将使阅读代码的任何人都清楚其意图,我怀疑其他人会更有效率。 -
如您所见,有几个问题一个问题,并不是所有问题都得到了回答。
-
empty()的实现方式是一个实现细节,具体取决于谁提供您的标准库实现。您不能指望它的性能在所有平台上的所有编译器中都是一致的。但它可能很便宜。除非/直到您的分析表明这是一个瓶颈,否则更喜欢它。