2009-04-23 76 views
0

我想知道如何獲取存儲在TBucketList中的項目數量。至於我可以看到有隻桶的數量和可用的桶陣列,因此,所有我能想到的是存儲在存儲桶列表中的項目數量

Count := 0; 
for I := 0 to BucketList.BucketCount - 1 do 
    Inc (Count, BucketList.Buckets [I].Count); 

這的工作,但它似乎很奇怪我,我必須通過所有迭代水桶找到存儲的物品的數量 - 可能經常需要的東西。

我錯過了另一種可能性嗎?或者是否有這個容器類不提供像其他容器一樣的Count成員的原因?

謝謝!

回答

4

圖書館從未完成。但是你可以擴展它們。

如果你經常需要這個值,你可以爲它寫一個類助手。

TBucketListHelper = class helper for TBucketList 
    function GetCount: Integer; 
end; 

function TBucketListHelper.GetCount: Integer; 
var 
    i : Integer; 
begin 
    Result := 0; 
    for I := 0 to BucketCount - 1 do 
    Inc (Result, Buckets [I].Count); 
end; 

您現在可以使用:

BucketList.GetCount 

如果TBucketListHelper是範圍之內。

+0

這正是我所做的。我不直接使用TBucketList,而是從它派生出我自己的類。我只是想知道是否還有其他可能性或者沒有實現的原因。如果我調用HashTable.Count之類的東西,我不希望它重複可能有數千個桶...... – jpfollenius 2009-04-23 09:19:45

2

沒有其他的解決方案,不需要保持計數器與內容同步。
它基本上是一個集合的集合。

0

由於您使用自己的派生類,所以只需遞增和遞減計數器添加刪除。爲了防萬一,你可以包含循環方法作爲雙重檢查。

相關問題