none
数组 RRS feed

  • 问题

  • Structure katak
            Dim id As Integer
            Dim x1 As Integer
            Dim y1 As Integer
            Dim x2 As Integer
            Dim y2 As Integer
        End Structure
    
    Dim katak(6000,6000) as katak

    我现在有上面的代码。。。katak数组插入数据的时候按坐标来插入,清空某一项也是按坐标来清空的。。。
    1.不过6000*6000或者分配更多空间的时候有时候报错误“内存不足”。。。
    2.我想把katak数组发送到另外一个窗体上,通过katak数组的下表为坐标画图,这个应该用for或者while语句来实现,如果现在只有katak(5000,5000)这个位置上有数据,其他地方都没数据的话,用for,while语句效率非常非常的低。。。

    在 这里最主要的是插入和删除。。。比如katak(100,100)的地方本来没数据,我通过坐标画图在katak(100,100)这个位置插入数 据。。。如果我不想要katak(100,100)这个位置数据就把他清空掉。。。然后发送到另外一个窗体上让他重新画出katak数组的信息。

    如果我用二位数组来实现坐标上的数据的话可以实现插入,删除,查找,不过浪费内存。

    求一个不耗内存,在坐标上也能更好的实现插入删除查找功能的方法。。。。。。。谢谢大家
    muradil
    2011年9月19日 2:47

答案

  • .Net 本身已经给你实现了一个结构 Point 所以你没有必要自己实现一个。

    一个好方法是你要建立一个二维布尔数组 6000*6000 随意大小,然后在这个数组里里面把有值那些坐标作为一个 HashTable 的 Key , 然后在这二位数组里面这个坐标上设置为True,标记是有值的,需要用坐标从HashTable中取找值。 这样,你只需要在一个HashTable中存储那些有数据的坐标的值,其他就不用了。而且HashTable的查找排序效率都很高。传递时也只要将二位表和对应的HashTable一同传过去就行了。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月19日 18:37
    版主