gpt4 book ai didi

c++ - string.empty() 或 string.size() == 0 哪个更快?

转载 作者:IT老高 更新时间:2023-10-28 22:16:48 28 4
gpt4 key购买 nike

最近,在一次讨论中,一位程序员同事要求我做一些代码更改。我有类似的东西:

if( mystring.size() == 0)
// do something
else
// do something else

讨论是关于使用 mystring.empty() 来验证字符串是否为空。现在,我同意可以说 string.empty() 是更冗长和可读的代码,但它有什么性能优势吗?

我做了一些挖掘,发现了与我的问题有关的以下 2 个答案:

这两个答案都支持我的说法,即 string.empty()string.size() == 0< 相比,更具可读性并且不提供任何性能优势

我仍然想确定,是否有任何 string 实现保留一个 internal boolean flag 来验证字符串是否为空?

或者某些实现使用的其他方式会使我的主张无效??

最佳答案

标准定义 empty() 如下:

bool empty() const noexcept;
Returns: size() == 0.

您很难找到不这样做的东西,并且由于两者都是恒定时间操作,因此任何性能差异都可以忽略不计。我希望两者都能在任何合理的实现上编译成完全相同的程序集。

也就是说,empty() 是清晰明确的。为了便于阅读,您应该更喜欢它而不是 size() == 0(或 !size())。

关于c++ - string.empty() 或 string.size() == 0 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539626/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com