我正在用 Pascal 编程,我试图找出标准库中是否有任何已经创建的函数/过程或类似的函数可以让我知道一个集合有多少元素?
我知道如何通过使用 for 循环和计数器在找到一个元素时增加 +1 来做到这一点(类似于当你想打印一个集合时必须做的事情),但我想知道是否还有其他更简单的方法这样做,就像我说的,一些预定义的标准功能/程序?
我正在用 Pascal 编程,我试图找出标准库中是否有任何已经创建的函数/过程或类似的函数可以让我知道一个集合有多少元素?
我知道如何通过使用 for 循环和计数器在找到一个元素时增加 +1 来做到这一点(类似于当你想打印一个集合时必须做的事情),但我想知道是否还有其他更简单的方法这样做,就像我说的,一些预定义的标准功能/程序?
如果您的集合是 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];
原因可能必须更多地寻求加速加密/压缩算法,而不是经典集合。