web-dev-qa-db-ja.com

std :: string length()およびsize()メンバー関数

私はこの答えを読んでいた questionstd::stringlength()というメソッドが実際にあることがわかった(私はいつもsize()を使っていた)。 std::stringクラスにこのメソッドがある特定の理由はありますか? MSDNとCppRefernceの両方を読みましたが、それらはsize()length()の間に違いがないことを示しているようです。そうだとすれば、クラスのユーザーにとって混乱を招かないでしょうか?

219
Naveen

ドキュメント に従って、これらは単なる同義語です。 size()は他のSTLコンテナ(vectormapetc。など)と一貫性があり、length()はほとんどの人々の直感的な概念と一貫性があります文字列。人々は通常、そのサイズではなく、単語、文、または段落のlengthについて話すので、物を読みやすくするためにlength()があります。

293
Todd Gamblin

Rubyはまったく同じですが、配列とハッシュ内のアイテム数の同義語として#lengthand#sizeの両方を提供します(C++は文字列に対してのみ行います)。

ミニマリストと「1つであることが理想的で、理想的には1つだけで、それを行う明白な方法」(Pythonの禅が唱えるように)は、あなたの疑いにほとんど同意するでしょう、@ Naveen 、Perlの「それを行う方法は複数あります」(または、1つの概念を表現するための多数のまったく同じ等価な構文形式を与える膨大なオプションの「ノイズワード」を含むSQLの構文)のファンは、Ruby、特にC++そのような同義の冗長性を提供するだけでは十分ではありません;-)。

15
Alex Martelli