我想創建城市距離數組CityDistances(CityId1, CityId2) = Distance
因爲我不知道會有多少城市,所以我需要一個無限數組。我試圖通過Dim CityDistances(,) As Double
創建它,但是當我嘗試使用它時,它會引發異常。我如何實現這一目標?創建無限大小的二維數組?
0
A
回答
3
不是數組的,一個可能是更好的選擇(多一點OOP)是通過使用List(Of Type)
。
Dim d As List(Of DIstances) = New List(Of Distances)()
d.Add(New Distances() With {.CityID1=1, .CityID2=2, .Distance=12.4})
d.Add(New Distances() With {.CityID1=1, .CityID2=3, .Distance=15.1})
d.Add(New Distances() With {.CityID1=1, .CityID2=4, .Distance=2.4})
d.Add(New Distances() With {.CityID1=1, .CityID2=5, .Distance=130.1})
Public Class Distances
Public CityID1 as Integer
Public CityID2 as Integer
Public Distance as Double
End Class
這樣做的好處是讓您的列表增長而不指定任何初始限制。
1
首先,通過這樣做:
Dim CityDistances(,) As Double
可以聲明一個指向一個二維陣列,而不考慮它的元素執行任何存儲器分配。預計一些方法會返回這個數組,你將通過這個指針來使用它。如果您嘗試按原樣使用它,但不會分配任何內容,您將得到index-out-of-bounds
例外,這是正常的。
其次,沒有無限數組這樣的東西。如果需要自動內存管理,則需要使用列表,字典詞典,DataTable
或類似列表。如果你想堅持的陣列,性能/方便的原因,你可以在需要時(增加尺寸)ReDim
它,並保存內容,如下所示:
Dim CityDistances(,) As Double
ReDim Preserve CityDistances(10,10)
'.... code goes here ....
ReDim Preserve CityDistances(100,100)
確保你知道什麼時候REDIM,因爲每次你會這樣做,.NET將創建另一個數組並複製其中的所有元素。隨着數組大小的增長,它可能會成爲性能因素。
第三,根據問題的性質,您可能需要查看Matrix
類的自定義實現。以下是我通過Google找到的一些鏈接,希望您發現它們有用。這些是C#,但互聯網上有free online converters to VB.NET。
Lightweight fast matrix class in C# (Strassen algorithm, LU decomposition)(免費)
Efficient Matrix Programming in C#(代碼項目,所以免費爲好)
High performance matrix algebra for .NET programming!(支付$ 99及以上)
相關問題
- 1. 創建二維數組變量的大小尺寸
- 2. jquery創建二維數組
- 3. F#創建二維數組
- 4. 創建二維數組
- 5. 創建二維數組的數組
- 6. 創建二維數組的數組
- 7. 如何創建二維數組的二維數組?
- 8. 如何創建二維char數組的二維數組?
- 9. 二維數組的行列大小
- 10. C:二維數組的大小
- 11. 輸入二維數組的大小
- 12. 構建無限維數組
- 13. 無限循環與二維數組
- 14. 創建文本框的二維數組
- 15. 如何創建從給定的二維數組一維數組
- 16. 從數據表創建二維數組
- 17. 如何創建不同大小字符串的動態二維數組
- 18. 將二維數組切片成較小的二維數組
- 19. 創建一個三維交錯數組來存儲不同大小的二維數組在java中
- 20. 創建一個二維數組,由另一二維數組的acumulation的
- 21. 紅寶石創建一個維數組,二維數組
- 22. 如何動態創建二維數組?
- 23. 在Rust中創建二維數組
- 24. 創建動態二維數組
- 25. 從終端(unix)創建二維數組
- 26. 一格創建一個二維數組
- 27. 創建一個動態二維數組
- 28. 從txt文件創建二維數組
- 29. 創建P5.js二維數組
- 30. 如何創建二維交錯數組
查詢時間呢?爲了加快速度,您需要創建雙鍵索引(city1,city2)或解決此問題的方法。所以如果你想用OOP的方法,可能會更好的是有Dictionary Of Dictionaries。 – Neolisk
確實如此,但我們不知道查找的OP要求。 – Steve
我想你是對的。我們等待來自OP的任何評論。 :) – Neolisk