38、深入探索泛型:从接口到智能指针及协变返回类型

深入探索泛型:从接口到智能指针及协变返回类型

1. 字典与字符串列表搜索性能对比

在代码中,对字符串列表( sList )和字典( sDict )进行元素值求和操作。为了比较在排序字符串列表(采用二分查找)和字典(使用哈希键)中搜索元素的时间差异,进行了测试。测试结果表明,虽然最终求和结果相同,但字典的搜索速度明显更快。对于百万条记录,字典的搜索时间约为字符串列表的四分之一,具体测试数据如下:
| 类型 | 总数值 | 搜索时间(毫秒) |
| ---- | ---- | ---- |
| 字符串列表 | 99493811 | 2839 |
| 字典 | 99493811 | 686 |

2. 泛型接口

在“Sorting a TList ”部分,我们注意到预定义接口的泛型声明用法。实际上,定义泛型接口是完全合法的,例如在 GenericInterface 应用项目中定义的 IGetValue<T> 接口:

type
  IGetValue<T> = interface
    function GetValue: T;
    procedure SetValue (Value: T);
  end;

与标准接口不同,泛型接口无需指定全局唯一标识符(GUID)作为接口 ID(IID),编译器会为每个泛型接口实例自动生成 IID。我们可以定义一个实现该泛型接口的泛型类

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值