导航

Pascal 特有的 集合

Posted on 2010-08-13 14:53  beeone  阅读(881)  评论(0编辑  收藏  举报

  集合是Pascal特有的数据类型,集合用一种有效的手段来表示一组有序数、字符和枚举值。声明一个集合用关键字 Set Of ,并在其后跟上有序类型或一个集合可能值的有限子集。示例如下:

Type

  TCharSet = Set Of Char ;    //可能的值: #0-#255;

  TEnum = (Monday,Tuesday,Wednesday,Thursday,Fridy);

  TEnumSet = set of TEnum;     //包含了TEnum值的任何组织;

  TSubrangeSet = set of 1..10;   //可能的值:1-10;

  TAlphaSet = Set of 'A'..'Z';      //可能的值:‘A’-‘Z’;

注意:一个集合最多只能有255个元素。另外,只有有序的类型才能跟关键字 set of ,因此下列的代码是非法的:

  Type

    TIntSet = set  of   Integer;   //非法,元素太多了超出255个元素

    TStrSet = set  of  String      //非法,不是有序的类型

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

  1,使用集合

  当使用集合的元素时,使用方括号。下面代码表明如何使用集合类型的变量并给它赋值。

  Type

    TCharSet = Set of char;

    TEnum = (Monday, Tuesday, wednesday,Thursday,Friday,Saturday,Sunday);

    TEnumSet = set of TEnum ;

  var

    CharSet : TCharSet ;

    EnumSet : TEnumSet;

    SubrangeSet : set of 1..10;

    AlphaSet : Set of 'A'..'Z';

  begin

    CharSet := ['A'..'J','a','m'];

    EnumSet := [Saturday, Sunday];

    SubrangeSet := [1,2,4..6];

    AlphaSet :=[];

  end;

          

  end;