Delphi中没有C++中的vector,用得有点不爽~~~如果我要实现这样的容器,该怎么做呢?最好附上源代码

解决方案 »

  1.   

    例一:
    动态数组
    var fields: array of integer;Setlenght(fields)//定义长度例二:
    var
    button:array of TButton;
    i,rows:integer;
    begin
    rows:=10;
    SetLength(button,rows);
    for i:=0 to Rows-1 do
      begin
          button[i]:=TButton.Create(self);
          with button[i] do
           begin
            Parent:=form1;  //此行必不可少,否则控件在屏幕显示不出
            top:=i*40;
            width:=60;
            height:=20;
            left:=50;
           end;
      end;
      

  2.   

    动态数组?这样不断的改变大小,效率应该很低吧~~~看来也只好用这个来模拟vector,一次多分配些。
    还有个问题,假设一个动态数组A,我SetLength为5各元素,每个元素都付值了,然后当我再用SetLength扩大元素数量的时候,前面的5各元素还在么?
      

  3.   

    Vector其实类似于一个OleVariant的数组,但是功能更加强大,且使用Add方法类似于TStringList,但功能更强大,能包容一切可被串行化的类实例。在java中被普遍使用。具体可以参照开发工具自带的函数库,在Delphi中也写一个出来(有时间大家一起写啊),但是估计作用不大。因为对Vector支持的Collection,Set类在Java中被设计成一种支持Remote的参数类型,所以作用很大。但在delphi中开发的COM+系统中可能很难支持这样的自自己做的类型。