Delphi 2009 泛型容器单元(Generics.Collections)[2]: TQueue<T>

摘要:
TObject);47岁;5051{让Memo1显示}52Memo1.Lines.Add(格式('%s';58var59rec;60begin61ifQueue.Count=0then62Exit;75begin76ifQueue.Count=0then77Exit;79ShowMessage(格式(%s;

TQueue 和 TStack, 一个是队列列表, 一个是堆栈列表; 一个是先进先出, 一个是先进后出.

TQueue 主要有三个方法、一个属性:
Enqueue(入列)、Dequeue(出列)、Peek(查看下一个要出列的元素);
Count(元素总数).

-------------------------------------------------------------------------------------------------------------------------------------------------------------

Delphi 2009 泛型容器单元(Generics.Collections)[2]: TQueue<T>第1张

 1 unit Unit1;
 2 
 3 interface
 4 
 5 uses
 6   Generics.Collections, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
 7   System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 8 
 9 type
10   TRec = record
11     Name: string;
12     Age: Word;
13   end;
14 
15 type
16   TForm1 = class(TForm)
17     Memo1: TMemo;
18     Button1: TButton;
19     Button2: TButton;
20     Button3: TButton;
21     procedure FormCreate(Sender: TObject);
22     procedure FormDestroy(Sender: TObject);
23     procedure Button1Click(Sender: TObject);
24     procedure Button2Click(Sender: TObject);
25     procedure Button3Click(Sender: TObject);
26   private
27     var
28       Queue: TQueue<TRec>;  {定义一个泛型 TQueue 类, 这指定了要用于上面定义的 TRec 记录}
29   public
30     { Public declarations }
31   end;
32 
33 var
34   Form1: TForm1;
35 
36 implementation
37 
38 {$R *.dfm}
39 
40  {入列: Enqueue}
41 
42 procedure TForm1.Button1Click(Sender: TObject);
43 var
44   rec: TRec;
45 begin
46   rec.Name := StringOfChar(Char(65 + Random(26)), 3);
47   rec.Age := Random(150);
48   Queue.Enqueue(rec);
49   Text := Format('当前队列成员总数: %d', [Queue.Count]);
50 
51   {让 Memo1 配合显示}
52   Memo1.Lines.Add(Format('%s, %d', [rec.Name, rec.Age]));
53 
54 end;
55 
56 {出列: Dequeue}
57 procedure TForm1.Button2Click(Sender: TObject);
58 var
59   rec: TRec;
60 begin
61   if Queue.Count = 0 then
62     Exit;
63   rec := Queue.Dequeue;
64   ShowMessage(Format('%s, %d', [rec.Name, rec.Age]));
65   Text := Format('当前队列成员总数: %d', [Queue.Count]);
66 
67   {让 Memo1 配合显示}
68   Memo1.Lines.Delete(0);
69 end;
70 
71 {下一个出列的元素: Peek}
72 procedure TForm1.Button3Click(Sender: TObject);
73 var
74   rec: TRec;
75 begin
76   if Queue.Count = 0 then
77     Exit;
78   rec := Queue.Peek;
79   ShowMessage(Format('%s, %d', [rec.Name, rec.Age]));
80 end;
81 
82 procedure TForm1.FormCreate(Sender: TObject);
83 begin
84   Queue := TQueue<TRec>.Create;
85 
86   Memo1.Clear;
87   Button1.Caption := Button1.Caption + ' 入列';
88   Button2.Caption := Button2.Caption + ' 出列';
89   Button3.Caption := Button3.Caption + ' 下一个出列的...';
90 end;
91 
92 procedure TForm1.FormDestroy(Sender: TObject);
93 begin
94   Queue.Free;
95 end;
96 
97 end.

免责声明:文章转载自《Delphi 2009 泛型容器单元(Generics.Collections)[2]: TQueue&amp;lt;T&amp;gt;》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Google App EngineAtitit. 单点登录sso 的解决方案 总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

This file is about changes in Emacs version 24.

This file is about changes in Emacs version 24. Table of Contents 1 Installation Changes in Emacs 24.1 1.1 Emacs can be compiled with Gtk+ 3.0 if you pass –with-x-toolkit=gtk3...

IOS-基础知识

1 变量声明 变量的声明与C语言一样,在变量名前加类型名 以下这些数据类型是从C语言中直接拿来使用的: int n; unsigned int n; char n; unsigned char n; long n; float n; double n; 另外,Objective-C还扩展了一些数据类型,布尔类型用YES和NO来表示逻辑1和逻辑0...

iOS URL Loading System / HTTP 重定向 认识与学习

一个朋友问了我一个问题,需求是这样的:他要用本地的H5资源 替换 链接资源,  但是判断链接资源时候 因为一些操作请求本地化了之后  一些操作比如请求服务器使用的是http开头,然而本地资源一直是以file://开头, 这样的 然后 shouldStart 方法中 的request(post请求)  body  是空的,  这样就无法到底知道是哪个链接了....

MySQL行列转换

实际应用中,会遇到需要把表的某些行转换成列,或者把列转换成行的情况。比如一张表在数据库中是这样的:  图1 但是,需要的结果可能是这样:  图2 这个时候就得行列转换了。 1.行转列的几种方法 1.1 case ...  when  ... then ... else ... end select uname,uid, -- 正常查询的字段 sum( ca...

SSH批量部署服务

SSH批量部署服务 在NFS上作为中心分发服务器将私钥分发到其他服务器上 NFS部署 1 [root@nfs-server ~]# useradd luoahong 2 [root@nfs-server ~]# echo 123456|passwd --stdin luoahong 3 Changing password for user l...

【计算机视觉领域】常用的 feature 提取方法,feature 提取工具包

  【计算机视觉领域】常用的 feature 提取方法,feature 提取工具包     利用 VL 工具包进行各种特征的提取:   VL 工具包官网地址:http://www.vlfeat.org/index.html   %% Extract Every kind of Features% the VL_tool box for fea...