私はCohoonとDavidsonによるC++プログラムの設計に取り組んでいます。これは、文字列クラスの属性についての説明です(第3版、123ページ)。
- 文字列を構成する文字
- 文字列の文字数
私の質問は、文字列の文字を知っている場合、それは文字列の文字数をすでに知っていることを意味しませんか?2番目の属性を明示的に指定する必要は何ですか?
あなたは正しいですが、カウントや、mallocメモリの長さ/終わりを知るなど、多くの場所で長さが必要になるため、プログラムを高速に実行するには、長さを追加のプロパティとして保存することをお勧めします。
プログラムに文字がいくつあるかを示すためだけに、プログラムが文字を数える必要がある場合はどうなるかを考えてみてください。さらに、この機能に頻繁にアクセスする場合。
したがって、長さを保存する時間も節約できます。
したがって、文字列クラスの実際の実装はすべて、文字列の長さを格納します。
文字列の文字を知っている場合、それは文字列の文字数をすでに知っていることを意味しませんか?
Cでは、NULL終端までカウントアップできるため、要素の数がわかります。しかし、文字列の長さを取得するのにどれほどの費用がかかると思いますか?弦全体を歩く必要があります。このような一般的な操作の場合、なぜこれを定数時間操作にしたくないのでしょうか。