delphi 中的 stl 及其例子 泛型编程 1行代码完成排序 1行代码完成颠倒容器元素 共50行 来灌水撒 (200分)

Z

zzsczz

Unregistered / Unconfirmed
GUEST, unregistred user!
https://sourceforge.net/projects/dunit/
下载decal



更正
在编译decal自带的工程文件"RegressDeCAL.dpr"时
1 新建C:/redblack/delphi/put目录
2 在程序最前加入"{$APPTYPE CONSOLE}"指明程序类型


例子
1行代码完成排序
1行代码完成颠倒容器元素
50行完成数组输出,排序,颠倒容器元素

program Project1;
{$APPTYPE CONSOLE}
uses
decal;
var a: DArray;
i: integer;

//向屏幕输出容器的元素
procedure PrintContainer(con: DContainer);
begin
writeln('container: ', con.classname, ' size:', con.size);
ForEach(con, MakeApply(ApplyPrintLN));
writeln;
end;
//以上是从SuperStream.pas单元copy出来得函数

function RandomNumber(ptr: Pointer): DObject
//generator 函数,类方法, ptr为self指针
begin
Result := Make([Random(1000)])
// 构造数组的元素,把随机数"boxing"成类 ,象c#吧?? a object:=integer
end;

//主程序
begin
A := DArray.Create
//构造数组
Generate(a, 10, MakeGenerator(RandomNumber))
//填充数组 ,10个元素 ,随便改吧
//以上一行可写成如下注释里的代码
{
for i := 1 to 10 do
begin
a.add([Random(1000)])

end;
}
writeln('数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果

reverse(a)
// 颠倒容器元素
writeln('颠倒后数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果

sort(a)
//不稳定排序 ,快速排序
writeln('不稳定排序后数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
end.




我看了一下DTL的文档 到书店翻了一下stl的书
decal是模仿sdl的,而dtl是模仿stl的
完善的decal之于object pascal,就像stl之于CPP
或者decal之于vcl,就像stl之于mfc

decal有点不好,2年了都不升级,不知是不是怕sdl的作者告侵权??。
我想试一试sdl,下载http://delphi.icm.edu.pl/ftp/d40share/sdltrld4.zip
发现是for delphi4的,我用的是d5,sdl没有源码不能用。

decal 使用了 array of const 的特性,非常独特。
c#的boxing技术的思想在decal中使用了很多次,源代码都有,"ms又在炒概念"。
decal提供了基于红黑数的容器的实现,而stl与.net的collection库只提供了基于哈希表的容器的实现

 
程序中有什么问题大家提撒,我会说我知道的。
 
斑竹宣传一下杀
 
http://expert.csdn.net/Expert/topic/1226/1226902.xml
共2000分 启动decal普及计划 ;delphi中的stl,delphi中的泛型编程及其例子 可以另开贴子给分
 
下载去了,
看了你的帖子,尤其是<<我和我以前同学的qq记录 菜鸟的对话>>我觉得非常好.
支持.
不过估计我不会.工作才一个月;).

再次支持.
可以留下QQ吗.
我的QQ:123618972
 
https://sourceforge.net/projects/decal/
下载decal
decal比较难于使用,我准备在一个小project中使用decal,怎么也不顺手

还好,找到一个易于上手的delphi容器库,
https://sourceforge.net/projects/dclx/
很好用

 
顶部