我正在研究 Cohoon 和 Davidson 的 C++ 程序设计。这是关于字符串类属性的内容(第 3 版,第 123 页):
- 组成字符串的字符
- 字符串中的字符数
我的问题是:如果我们知道字符串中的字符,是否意味着我们已经知道字符串中的字符数?需要明确指定第二个属性是什么?
您是对的,但是在许多地方都需要长度,例如计数,或者知道 malloc 内存的长度/结束,因此最好将长度存储为附加属性,以使您的程序快速运行。
考虑一下如果程序需要一直计算字符以告诉您其中有多少字符会发生什么。此外,当经常访问此功能时。
所以它也只是节省了存储长度的时间。
所以字符串类的所有实际实现都会存储字符串的长度。
如果我们知道字符串中的字符,是否意味着我们已经知道字符串中的字符数?
好吧,在 C 中我们知道元素的数量,因为我们可以数到 NULL 终端。但是想想获得一个字符串的长度有多昂贵?它需要走完整个字符串。对于这样一个常见的操作,我们为什么不希望这是一个恒定时间的操作呢?