В идеале, count
будет количеством элементов, а size
будет объемом занимаемого хранилища (как в sizeof
).
На практике все три (включая length
, что является наиболее неоднозначным) запутаны во многих широко используемых библиотеках, поэтому на данном этапе нет смысла пытаться наложить на них шаблон.
Обычно length () используется, когда что-то имеет постоянную длину, а size () используется для чего-то с переменной длиной. После этого я не знаю веских причин для использования двух почти синонимичных терминов.
Как уже говорили другие, я думаю, что это семантическая разница. Массивы очень четко определены и называются имеющими длину. Коллекция объектов более нечеткая, отчасти потому, что ее реализация (массив, связанный список, дерево?) Не обязательно является вашей проблемой. У дерева на самом деле нет длины, но у него есть определенный размер, поэтому размер может иметь больше смысла семантически.
Для меня
«длина» подразумевает порядок, вы измеряете длину от начала до конца.
«размер» подразумевает размер объекта, не подразумевая порядок, начало или конец.
Я так не думаю. Скорее всего, это вызвано тем, что API работает в большой команде, и разные люди по-разному относятся к тому, каким должно быть имя, особенно со словами, которые являются синонимами в определенном контексте, например, размер и длина в данном случае.
Для меня "размер" используется при описании структуры или другого способа организации байтов в компьютере. Он не обязательно должен быть инстанцирован. С другой стороны, "размер" подразумевает, насколько большим является конкретный буфер байт в памяти в данный момент времени.
Например, какова длина буфера, который вы предоставляете? Это то же самое количество байт, что и размер структуры x.
.