知道一组有多少元素?

时间:2012-10-17 12:09:51

标签: set pascal freepascal standard-library

我正在使用Pascal进行编程,我正在尝试查找标准库中是否有任何已创建的函数/过程或类似函数,以便让我知道集合中有多少元素?

我知道如何通过使用for循环和计数器来增加+1,当它找到一个元素时(类似于你想要打印一套时必须要做的)但是我想知道是否有任何其他更简单的方法,就像我说的,一些预定义的标准函数/程序?

2 个答案:

答案 0 :(得分:3)

如果您的集合是1,2,4或8字节,则可以使用最近引入的popcnt内在函数。

此内在函数在系统中,但仅在主干(2.7.1)

function PopCnt(Const AValue: Byte): Byte;[internproc:fpc_in_popcnt_x];
function PopCnt(Const AValue: Word): Word;[internproc:fpc_in_popcnt_x];
function PopCnt(Const AValue : DWord): DWord;[internproc:fpc_in_popcnt_x];
function PopCnt(Const AValue : QWord): QWord;[internproc:fpc_in_popcnt_x];

然而,必须在加速加密/压缩算法方面寻求更多原因,而不是经典集。

答案 1 :(得分:2)

不是标准帕斯卡,没有。许多实现都有非标准的添加;例如,GNU Pascal具有函数Card(“基数”的缩写):http://www.gnu-pascal.de/gpc/Card.html#Card

编辑我看到它被标记为Free Pascal,根据this page,它缺少这样的补充。你必须循环增加一个计数器的集合。至少你只需要遍历集合中的实际元素,而不是循环遍历所有可能性并检查每个元素是否存在......