¿Por qué std::string tiene una función miembro length() además de size()?
Estaba leyendo las respuestas de ¿Cómo obtener la cantidad de caracteres en una cadena std::string? y descubrí que en realidad hay un método requerido length()
( std::string
siempre usé size()
).
¿Existe alguna razón específica para tener esta función miembro en la std::string
clase? He leído MSDN y CppRefernce y parecen indicar que no hay diferencia entre size()
y length()
. Si es así, ¿no resulta más confuso para el usuario de la clase?
Según la documentación , estos son solo sinónimos. size()
debe ser coherente con otros contenedores STL (como vector
, map
, etc. ) y length()
debe ser coherente con la noción intuitiva de cadenas de caracteres de la mayoría de las personas. La gente suele hablar de la longitud de una palabra, frase o párrafo , no de su tamaño, por lo que length()
está ahí para hacer las cosas más legibles.
Ruby es igual, por cierto, ofrece ambos #length
y #size
como sinónimos de la cantidad de elementos en matrices y hashes (C++ solo lo hace para cadenas).
Los minimalistas y las personas que creen que "debería haber una, e idealmente sólo una, manera obvia de hacerlo" (como recita el Zen de Python), supongo que estarán en su mayoría de acuerdo con tus dudas, @Naveen, mientras que los fanáticos de Perl " Hay más de una forma de hacerlo" (o la sintaxis de SQL con millones de "palabras irrelevantes" opcionales que dan innumerables formas sintácticas idénticamente equivalentes para expresar un concepto) sin duda se quejarán de que Ruby, y especialmente C++, simplemente no llegan muy lejos. suficiente para ofrecer tal redundancia sinónima ;-).