Std::string функции length() и size()

Я читал ответы на этот вопрос и обнаружил, что на самом деле существует метод, называемый length() для std::string (я всегда использовал size()). Есть ли конкретная причина для использования этого метода в классе std::string? Я прочитал и MSDN, и CppRefernce, и они, кажется, указывают на то, что нет никакой разницы между size() и length(). Если это так, разве это не вводит в заблуждение пользователя класса?

Ответ 1

Согласно документации это всего лишь синонимы. size() должен быть совместим с другими контейнерами STL (например, vector, map и т.д.) и length() должен соответствовать интуитивному понятию символов персонажей большинства людей. Обычно люди говорят о слове, фразе или абзаце, а не о его размере, поэтому length() делает вещи более читабельными.

Ответ 2

Ruby точно так же, btw, предлагая как #length, так и #size как синонимы количества элементов массивов и хэшей (С++ делает это только для строк).

Минималисты и люди, которые считают, что "должен быть один, и в идеале только один, очевидный способ сделать это" (как читает Zen of Python), я думаю, в основном согласен с вашими сомнениями, @Naveen, в то время как поклонники Perl "Там более чем один способ сделать это" (или синтаксис SQL с дополнительными "шумными словами" bazillion, дающими несколько одинаково эквивалентных синтаксических форм для выражения одной концепции), несомненно, будут жаловаться на то, что Ruby, и особенно С++, t достаточно далеко, предлагая такую ​​синонимическую избыточность; -).

Ответ 3

При использовании инструментов практики кодирования (LeetCode) кажется, что size() быстрее, чем length() (хотя в основном незначительно)

Ответ 4

длина строки == количество бит, которые содержат строку, size == размер этих бит, В строках оба одинаковы, если редактор выделяет размер символа, составляет 1 байт