我想知道如何获得存储在TBucketList中的项目数量。据我所知,只有存储桶的数量和存储桶数组可用,所以我能想到的就是
Count := 0;
for I := 0 to BucketList.BucketCount - 1 do
Inc (Count, BucketList.Buckets [I].Count);这确实有效,但对我来说似乎很奇怪,我必须遍历所有存储桶才能找到存储的项的数量-这可能是经常需要的东西。
我是不是错过了另一个可能性?或者,为什么这个容器类不像其他容器那样提供Count成员?
谢谢!
发布于 2009-04-23 09:09:33
库永远不会完整。但是你可以扩展它们。
如果你经常需要这个值,你可以为此编写一个类帮助器。
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在作用域内。
发布于 2009-04-23 09:13:45
如果不保持计数器与内容同步,就没有其他解决方案。
它基本上是一个集合的集合。
发布于 2009-04-23 19:01:57
由于您使用的是自己的派生类,因此只需在上递增和递减计数器,添加并删除即可。为了以防万一,您可以包含循环方法作为双重检查。
https://stackoverflow.com/questions/780854
复制相似问题