Std::string length()和size()成员函数

我正在阅读这个问题的答案,发现实际上有一个方法叫做length()std::string(我总是使用size())。在std::string类中有这个方法有什么特殊的原因吗?我读了MSDN和cppreference,它们似乎表明size()length()之间没有区别。如果是这样的话,是不是会让类的用户更加困惑呢?

211867 次浏览

根据文档,这些只是同义词。size()是为了与其他STL容器(如vectormap等。)保持一致,而length()是为了与大多数人对字符串的直观概念保持一致。人们通常谈论的是一个词、句子或段落的长度,而不是它的大小,所以length()的存在是为了让事情更具可读性。

顺便说一下,Ruby也是一样的,它提供了#length 而且 #size作为数组和哈希中项目数量的同义词(c++只对字符串这样做)。

我猜,极简主义者和那些相信“应该有一种,而且理想情况下只有一种明显的方法来做到这一点”(就像Python的禅意所吟唱的那样)的人,大部分会同意你的怀疑,@Naveen,而Perl的“有不止一种方法来做到这一点”(或者SQL的语法有无数可选的“噪音词”,给出无数相同的等价语法形式来表达一个概念)的粉丝,毫无疑问会抱怨Ruby,尤其是c++,只是在提供同义词冗余方面做得还不够;-)。

字符串长度==字符串有多少位, Size ==这些位的大小, 在字符串中,如果编辑器分配的字符大小为1字节

,则两者相同

当使用编码实践工具(LeetCode)时,size()似乎比length()更快(尽管基本上可以忽略不计)