it-swarm.com.de

std :: string length () und size () Mitgliedsfunktionen

Ich habe die Antworten zu diesem Frage gelesen und festgestellt, dass es tatsächlich eine Methode namens length() für std::string Gibt (ich habe immer size() verwendet) . Gibt es einen bestimmten Grund dafür, diese Methode in der Klasse std::string Zu haben? Ich habe sowohl MSDN als auch CppRefernce gelesen und sie scheinen darauf hinzuweisen, dass es keinen Unterschied zwischen size() und length() gibt. Wenn dem so ist, ist es für den Benutzer der Klasse nicht verwirrender?

230
Naveen

Gemäß Dokumentation sind dies nur Synonyme. size() soll mit anderen AWL-Containern konsistent sein (wie vector, map, etc. ) und length() müssen mit der intuitiven Vorstellung der meisten Leute von Zeichenketten übereinstimmen. Die Leute sprechen normalerweise über die Länge eines Wortes, Satzes oder Absatzes und nicht über seine Größe. length() soll die Lesbarkeit verbessern.

303
Todd Gamblin

Ruby ist übrigens genau das Gleiche und bietet sowohl #lengthnd#size Als Synonyme für die Anzahl der Elemente in Arrays und Hashes (C++ funktioniert nur für Strings).

Minimalisten und Leute, die glauben, "es sollte einen und im Idealfall nur einen offensichtlichen Weg geben, dies zu tun" (wie das Zen von Python rezitiert), werden Ihren Zweifeln größtenteils zustimmen , @Naveen, während Fans von Perls "Es gibt mehr als einen Weg, es zu tun" (oder von SQLs Syntax mit einer Unmenge optionaler "Noise Words", die unzählige identisch äquivalente syntaktische Formen zum Ausdruck bringen, um ein Konzept auszudrücken) sich zweifellos über Ruby und beklagen Gerade in C++ reicht es nicht aus, eine solche synonymische Redundanz anzubieten ;-).

15
Alex Martelli