2010-02-04 43 views
9

可能重複:
count vs length vs size in a collection術語「長度」和「大小」(當然在編程中)之間是否存在技術差異?

在Java特別是關於Strings,你叫string.length(),而在Lists你叫list.size()。這兩個術語之間是否存在技術差異,因爲String實際上只是一個chars的列表?

任何意見讚賞。

+1

也許不同之處在於「長度」與序列一起使用(即某些連續的)。更一般的'尺寸'是用於集合(只是一個項目集合)? – 2010-02-04 21:49:53

+0

http://stackoverflow.com/questions/300522/count-vs-length-vs-size-in-a-collection – 2010-02-04 22:03:26

回答

9

理想情況下,count將是項目的數量,而size將是佔用的存儲量(如在sizeof中)。

在實踐中,所有三種(包括length,這是最不明確的)在許多廣泛使用的庫中混淆起來,所以在這個階段試圖強加一個模式是沒有意義的。

+2

+1承認程序員不完美。 – 2010-02-04 22:04:53

+2

有時'size'用於物品的數量,'capacity'是用於存儲的數量。 – 2010-02-04 22:19:05

+0

@litb,關於C++,是否有可能'vector :: capacity'可能會返回一個非零值,儘管還沒有分配存儲空間?在發生適當的「調整大小」之前嘗試使用存儲器是未定義的行爲。因此,一個實現可能會延遲實際分配 - 然後它可能也會分配比我們要求的更多的分配。所以'容量'更像是實現的暗示,而不是實際的存儲使用聲明。毫無疑問,這樣的實現會打破一些現存的程序,那些程序會執行'v.reserve(200)',然後直接執行'&v [100]'。 – 2010-02-05 09:38:01

3

我不這麼認爲。這更可能是由API在大型團隊中工作引起的,而不同的人對名稱應該有什麼不同的看法,特別是在某些上下文中具有同義詞的詞語,例如這個詞的大小和長度。

13

一般來說,length()用在有東西長度固定的情況下,而size()用於長度可變的東西。過去,我知道使用兩個近似同義詞的理由不充分。

+1

的類似討論假設這個,length()是用於***不可變的***數據類型* String *和size()用於***可變***數據類型,如* List *。 – Alex 2011-08-03 21:54:33

2

正如其他人所談及的,我認爲這是一種語義上的差異。數組非常清晰,被稱爲長度。對象集合更加模糊,部分原因是它的實現(它是一個數組,鏈表,樹?)不一定是你的關注。樹並不是真的有一個長度,但它有一個確定的大小,所以大小可能更有意義的語義。

+0

不使用'size'作爲數組是有意義的,因爲數組的確有一個大小,但它不是元素的數量。一個'int [5]'數組長度爲5,長度爲20(5個元素,每個爲4個字節,長度爲20個字節)。但是這與您的樹例子相沖突,就好像樹的大小是樹中元素的數量,那麼如何命名內存中的實際大小?因此,我不會使用樹的大小,而是使用'count'或'numberOfNodes'。除非我們根據定義討論長度有限的事物,否則我總體上避免了「長度」。一個String有一個長度(和一個大小!),但它不應該有一個「count」。 – Mecki 2017-10-27 11:12:20

3

對於我來說,

「長度」意味着一個訂單,要測量從起點到終點的長度。

「大小」意味着有多大的東西不暗示訂單,開始或結束。

0

對我而言,「大小」用於描述結構或其他方式來組織字節在計算機中。它不一定必須被實例化。另一方面,「長度」意味着內存中特定的字節緩衝區在給定點處有多大。

E.g.你提供的緩衝區的長度是多少?它與結構x的大小相同。

相關問題