当前位置:  开发笔记 > IOS > 正文

计数与集合中的长度与大小

如何解决《计数与集合中的长度与大小》经验,为你挑选了3个好方法。

通过使用大量编程语言和库,我注意到用于集合中元素总数的各种术语.

最常见的似乎是length,countsize.

例如.

array.length
vector.size()
collection.count

是否有任何首选术语?它取决于它是什么类型的集合?即.可变/不可变

是否倾向于将其作为属性而不是方法?



1> gbjbaanb..:

Length() 倾向于引用连续的元素 - 例如,字符串具有长度.

Count() 倾向于指宽松集合中的元素数量.

Size() 倾向于引用集合的大小,通常这可能与向量(或字符串)之类的长度不同,字符串中可能有10个字符,但存储保留为20.它也可以指数量元素 - 检查源/文档.

Capacity() - 用于专门引用集合中的已分配空间,而不是其中有效元素的数量.如果type同时定义了"capacity"和"size",那么"size"通常指的是实际元素的数量.

我认为主要的观点是人类语言和习语,字符串的大小似乎不是很明显,而一组的长度同样令人困惑,即使它们可能用于指代相同的东西(元素的数量) )在一组数据中.


@ben:size =可用的槽数,count =实际的元素.size ==在集合满时计数.
@DaveAbrahams - 我从来没有说过那种情况.再读一遍.我说它"倾向于引用",我甚至都没有试图做出一个特定的声明,它同样适用于所有语言中所有集合类的所有排列.
downvoting因为`size()`是指向量中元素的数量,*not*它的`capacity()`...至少在C++中,我认为它是`vector`s的'size`s'的创始人.
那么什么是"更宽松的收藏"?我没有看到尺寸和数量之间的差异.
@SnOrfus我认为你已经进入那里的"能力"领域.[`std :: vector`](例如,http://www.cplusplus.com/reference/vector/vector/)(C++)使用"capacity"和"size",你使用"size"和"count",分别.实际上,*std ::`中的**使用"size"作为当前元素计数,甚至是`std :: string`(它为模板兼容性提供"大小",为...提供完全相同的"长度"我猜).

2> Michael Burr..:

FWIW(而且几乎没有任何东西),我更喜欢'Count',因为它似乎表明它将非常明确地返回集合中元素/项目的数量.

当面对"长度"或"大小"这个术语时,我常常想知道片刻(甚至被迫重新阅读文档)是否该死的事情会告诉我在集合中有多少元素或者如何集合消耗的许多字节.对于打算像数组或字符串一样具有连续性的集合尤其如此.

但是,没有人负责Java,BCL/.Net或C/C++标准框架/库所使用的命名约定,这些都很困扰我,所以你们都会遇到他们提出的问题.

如果只有我比我更聪明并被命名为Bjarne,你们所有人都可能幸免于难......

当然,回到现实世界中,您应该尝试坚持使用您正在使用的语言/平台的任何命名约定(例如,size()在C++中).并不是说这似乎可以帮助你解决Array.Length困境.


虽然长度和大小是名词,但Count也是一个动词,因此可以解释为在运行时计数(O(n))vs查找值(O(1)).

3> Mecki..:

这些术语在某种程度上可以互换,但在某些情况下,我更喜欢一个而不是另一个.通常,如果你想一下,你可以得到最好的用法你如何口头描述这个元素的长度/大小/数量给另一个人?.

length()暗示元素具有长度.字符串有一个长度.你说"一个字符串长20个字符",对吧?所以它有一个长度.

size()暗示元素具有大小.例如,文件的大小.你说"这个文件大小为2 MB",对吧?所以它有一个大小.

也就是说,一个字符串也可以有一个大小,但我希望在这里有别的东西.例如,UTF-16字符串可能有100个字符的长度,但由于每个字符由两个字节组成,我希望大小为200.

count()很不寻常.Objective-C使用count表示数组中的元素数.有人可能会争辩说,如果一个数组有一个长度(如在Java中),有一个大小(如在大多数其他语言中)或有一个计数.但是,大小可能再次是字节大小(如果数组项是32位int,每个项目是4个字节)和长度...我不会说"一个数组是20个元素长",这听起来很奇怪我.我会说"数组有20个元素".我不确定count是否表达得非常好,但我认为count在这里是一个简短的形式,elementCount()并且对于数组而言再次比length()或size()更有意义.

如果使用编程语言创建自己的对象/元素,最好使用其他类似元素使用的任何对象/元素,因为程序员习惯使用该术语访问所需的属性.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有