2009-05-25 7 views
171

ich die Antworten für diese question las und fand, dass es tatsächlich Methode length() für Strings genannt ist (ich immer verwendete Größe()). Gibt es einen bestimmten Grund für diese Methode in der String-Klasse? Ich lese sowohl MSDN als auch CppReference und sie scheinen anzuzeigen, dass es keinen Unterschied zwischen size() und length() gibt. Wenn das so ist, macht es nicht mehr verwirrend für den Benutzer der Klasse?std :: string length() und size() Member-Funktionen

Antwort

226

Gemäß der documentation, das sind nur Synonyme. size() soll mit anderen STL-Containern konsistent sein (wie vector, map, usw.) und length() ist konsistent mit der intuitiven Vorstellung von Zeichenfolgen der meisten Menschen. Leute sprechen normalerweise über ein Wort, einen Satz oder einen Absatz Länge, nicht seine Größe, also ist length() dort, Sachen besser lesbar zu machen.

+7

Einverstanden. Wenn ich Template-Klassen und -Funktionen schreibe, verwende ich lieber 'size()' (falls ich jemals Nicht-String-Klassen verwende), aber meistens benutze 'length()', wenn ich mit einfachen Strings arbeite. – Marius

+1

Gibt size() nicht die Größe der Zeichenfolge im Speicher zurück (in Bytes), während length() die Anzahl der Zeichen zurückgibt, die zufällig zusammenfallen, seit 1 char = 1 Byte? –

+1

Nein. Sie sind die gleiche Funktion; Sie teilen sogar die Dokumentation: http://en.cppreference.com/w/cpp/string/basic_string/size. – tgamblin

15

Rubys genau das gleiche, btw, bietet sowohl #lengthund#size als Synonyme für die Anzahl der Elemente in Arrays und Hashes (C++ nur, dass es für Strings).

Minimalists und Leute, die glauben "es sollte einen, und idealerweise nur einen, offensichtlichen Weg geben, es zu tun" (wie der Zen von Python sagt), wird, denke ich, hauptsächlich mit deinen Zweifeln, @ Naveen, übereinstimmen Fans von Perls "Es gibt mehr als einen Weg, es zu tun" (oder SQL-Syntax mit einem Bazillion optional "Noise-Wörter" zig verschiedene identisch syntaktische Formen zu geben, um ein Konzept auszudrücken) wird sich zweifellos beschweren, dass Ruby, und insbesondere C++, einfach nicht Geh nicht weit genug, um eine solche synonymische Redundanz anzubieten ;-).

+8

In diesem Fall ist es kostenlos. Perls Grammatik und Verwendung ermöglicht es Ihnen, Dinge mit dem von Ihnen bevorzugten Stil auszudrücken. Zwei verschiedene Wörter für dasselbe zu haben, macht es nur schwer, in Stackoverflow Suchbegriffe zu finden. –

-3

Länge der Zeichenfolge ==, wie viele Bits, die Zeichenfolge mit, Größe == Größe dieser Bits, In Strings sind beide gleich, wenn der Editor Größe von Zeichen zuordnet ist 1 Byte

+0

falsche Antwort. Siehe Dokumentation in der akzeptierten Antwort verlinkt. –

Verwandte Themen