• 集合类型


    集合是由多个具有相同类型的元素所组成的,集合中的元素是某种数据类型的值。这些数据类成为集合的基类型。

    集合在内部以位的形式存储它的元素,这使得在速度和内存利用上都更有效。集合如果少于32个元素,它就存储在 CPU 的寄存器中,这样的效率就更高了,为了用集合类型得到更高的效率。记住,集合的基本类型的元素数目要小于32。

    集合中的元素是无序的,且集合中的元素不能够出现重复,有重复元素只作为一个元素。

    一个集合最多可有256个元素,即集合类型的基类型的取值范围为0~255,因此声明的集合类型不能是整型,实型以及其他构造类型。

    集合的基类型可以设置为字符型,布尔型,枚举型以及子界型和顺序类型。

    Type下声明集合:

    1 type
    2   集合类型名称 = Set of 基类型;
    1 type
    2     TCharSet = set of char;    //字符型
    3     TEnum = (Monday, Tuesday, Wednesday, Thursday, Friday);//枚举型
    4     TEnumSet = set of TEnum;    //包含了TEnum值得任何组合
    5     TSubrangeset = set of 1..10;    //子界型
    6     TAlphaSet = set of 'A'..'Z';   
    1 type
    2   Language = set of (English,German,France);//枚举
    3   char1 = set of char; //字符
    4   number1 = set of 1..9; //子界
    1  注意,一个集合最多只能有255个元素。另外,只有有序的类型才能跟关键字set of ,因此下面的代码是非法的
    2 
    3 type
    4     TIntSet = set of Integer;    //非法,太多的元素
    5     TStrSet = set of String;     //非法,不是有序的类型

    过程中使用集合:

     1 procedure TForm1.Button5Click(Sender: TObject);
     2 var
     3   ch : char1;
     4   num : number1;
     5 begin
     6   ch := ['a'..'z'];
     7   //exclude(ch,'c');//移除一个集合元素
     8   include(ch,'c');//添加一个集合元素
     9   //num := [10];
    10   include(num,10);
    11   if 10 in num then
    12     showmessage('成功');
    13   if 'c' in ch then
    14     showmessage('包含');
    15 end;
     1 当使用集合的元素的时候,使用方括号。下面代码表明如何使用集合类型的变量并给它赋值
     2 1.在type中定义并赋值
     3 
     4 type
     5     TcharSet = set of char;
     6 var
     7     CharSet : TCharSet;
     8 begin
     9     CharSet :=['A'..'J','a','m'];
    10 end;
    11 2.在过程var中定义并赋值
    12 var
    13     SubrangeSet : set of 1..10;    //可能是1到10的任意数
    14 begin
    15     SunrangeSet := [1,2,4..6];
    16 end;

    集合的值

      1.集合的值放在一对方括号里,中间各元素使用逗号隔开。如:[1,2,5]和['a', 'e', 'i']都是集合

      2.在集合中可以没有任何元素,这样的集合称为空集。[]空集

      3.在集合中,如果元素的值是连续的,则可用子界型的表示法表示。例如:[1,2,3,4,5,6,10,15] 可以表示成[1..5,10,15]

      4.集合的值与方括号内元素出现的次序无关。例如[1,5,8]和[1,8,5]的值相等

      5.在集合中同一个元素的重复出现对集合的值没有影响。例如[1,8,5,1,8]与[1,5,8]的值相等

    集合的应用实例:

    1 type
    2   Language = set of (English,German,France);//枚举  
     1 procedure TForm1.Change(Sender: TObject);
     2 begin
     3   if checkbox4.Checked then
     4   begin
     5     L := L + [English];
     6   end
     7   else
     8   begin
     9     L := L - [English];
    10   end;
    11   if checkbox5.Checked then
    12   begin
    13     L := L + [German];
    14   end
    15   else
    16   begin
    17     L := L - [German];
    18   end;
    19   if checkbox6.Checked then
    20   begin
    21     L := L + [France];
    22   end
    23   else
    24   begin
    25     L := L - [France];
    26   end;
    27   if English in L then
    28     checkbox1.Checked := true
    29   else
    30     checkbox1.Checked := false;
    31   if German in L then
    32     checkbox2.Checked := true
    33   else
    34     checkbox2.Checked := false;
    35   if France in L then
    36     checkbox3.Checked := true
    37   else
    38     checkbox3.Checked := false;
    39 end;
    40 
    41 procedure TForm1.FormCreate(Sender: TObject);
    42 begin
    43   checkbox4.OnClick := change;
    44   checkbox5.onclick := change;
    45   checkbox6.OnClick := change;
    46 end;

     

  • 相关阅读:
    [转]当鼠标点击ListView下面的空白区域时,如何使ListView的原item选项仍然为选中状态
    [转]图像处理去噪的方法
    C# 图片上画连线时 自定义两点间的划线段样式
    C# WinForm (笨方法)根据不同的样式配置 设置窗体相关控件的背景 以改变窗体风格
    [转]sqlserver 数据类型 及使用考虑
    C# WinForm 关于窗体最大化时的是否全屏效果与是否遮盖任务栏
    [转]C# 画圆角矩形
    Ruby常用的内部变量
    document.getElementsByClassName的理想实现
    转:ie6与firefox操作iframe中DOM节点的一点不同
  • 原文地址:https://www.cnblogs.com/fansizhe/p/12602763.html
Copyright © 2020-2023  润新知