Delphi 中这样的集合操作如何进行?
type
TSet=(a=200,b=201,c=202,d=203,e=204);
TSets=set of TSet;
var
t:TSets;
begin
t :=[c,e,b];
//现在要求如下操作
//1、获取t集合中有几个元素,上例中也就是有三个,如何操作?
//2、如何获取t集合中值是第二大的元素,上例中值是第二大的元素是c,如何操作?
// 也就是说为t集合中所有的元素做个排序,然后取第二大的元素。
end;
[解决办法]
2.Set的目的不在于此
你想达到的效果,应该用其他的方法。
比较笨但简单的方法是,将其转换成string,保存在stringlist中,它可以sort。
一般会用什么quicksort之类的共用类来实现。
[解决办法]
procedure TForm1.SpeedButton1Click(Sender: TObject);
type
TSet = (a = 200, b = 201, c = 202, d = 203, e = 204);
TSets = set of TSet;
var
t: TSets;
i : TSet;
count : Integer;
begin
t := [c, e, b];
Count := 0;
for i := High(TSet) downto Low(TSet) do
begin
if i in t then
begin
Inc(Count);
end;
end;
//Count就是元素个数.
//循环是从Hight到Low.最大,第二大你也该知道怎么获取了吧.
end;