ron*_*ilp 0 c++ string size string-length time-complexity
length()返回字符串中的字符数并size()返回一个size_t也是相同但用于使其与其他STL容器一致的字符数.
对于计算length(),字符串遍历所有字符并计算长度.所以,O(n)时间.
是否size()也一样呢?
或者可以及时直接计算变量的大小O(1)?
所以,我的问题是,它们在速度方面是否相同(如计算它们的方式)还是在O(1)时间上计算尺寸?
Jak*_*nda 14
如果您查看此处的文档,它会说length并且size是相同的。
string::size 和 string::length 都是同义词并返回相同的值。
此外,如果您查看代码,长度已缓存,因此复杂度为O(1). (来自 MS 实现的代码,但我确信其他库也是如此。)
size_type length() const _NOEXCEPT
{ // return length of sequence
return (this->_Mysize);
}
size_type size() const _NOEXCEPT
{ // return length of sequence
return (this->_Mysize);
}
Run Code Online (Sandbox Code Playgroud)
两者都具有相同的复杂性:常数.
根据N4431工作草案,§21.4.4
size_type size() const noexcept;返回:字符串中当前字符串对象数的计数.复杂性:恒定时间.
和
size_type length() const noexcept;返回:size().
[...]遍历所有角色并计算长度[...]
那是你想到的C字符串.