【发布时间】:2010-10-28 16:12:31
【问题描述】:
我正在阅读这个question 的答案,发现实际上有一个名为length() 的方法用于std::string(我一直使用size())。在std::string 类中使用此方法有什么具体原因吗?我阅读了 MSDN 和 CppRefernce,它们似乎表明 size() 和 length() 之间没有区别。如果是这样,是不是让班级的用户更加困惑?
【问题讨论】:
我正在阅读这个question 的答案,发现实际上有一个名为length() 的方法用于std::string(我一直使用size())。在std::string 类中使用此方法有什么具体原因吗?我阅读了 MSDN 和 CppRefernce,它们似乎表明 size() 和 length() 之间没有区别。如果是这样,是不是让班级的用户更加困惑?
【问题讨论】:
根据documentation,这些只是同义词。 size() 是为了与其他 STL 容器(如 vector、map、等)保持一致,length() 是为了与大多数人对字符串的直观概念保持一致。人们通常谈论一个单词、句子或段落的长度,而不是它的大小,所以length() 是为了让事情更具可读性。
【讨论】:
size()(以防我使用非字符串类),但大多数时候我在使用纯字符串时使用length()。
std::string=> std::bacsic_string<char> count of charstd::wstring => std::basic_string<wchar_t> count of wchar_t.
Ruby 也一样,顺便说一句,提供 #length 和 #size 作为数组和散列中项目数的同义词(C++ 只对字符串这样做)。
我想,极简主义者和相信“应该有一种,理想情况下只有一种明显的方式来做到这一点”(正如 Python 之禅所背诵的那样)的人大多会同意你的疑问,@Naveen,而粉丝Perl 的“有不止一种方法可以做到这一点”(或者 SQL 的语法带有大量可选的“干扰词”,给出了无数相同的语法形式来表达一个概念)无疑会抱怨 Ruby,尤其是 C++,只是不要'在提供这种同义词冗余方面做得不够;-)。
【讨论】:
在使用编码练习工具(LeetCode)时,似乎 size() 比 length() 快(虽然基本上可以忽略不计)
【讨论】:
字符串长度==该字符串有多少位, size==这些位的大小, 如果编辑器分配的字符大小为 1 字节,则在字符串中两者都是相同的
【讨论】: