Multidimensionale arrays

  • VB.NET
  • .NET (FX) 4.0

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Hi
    sollte z.B. irgendwie so gehen:

    VB.NET-Quellcode

    1. Shared Function Zip(Of T)(left As T(), right As T(), Optional defaultValue As T = Nothing) As T(,)
    2. If left Is Nothing Then Throw New ArgumentNullException("left")
    3. If right Is Nothing Then Throw New ArgumentNullException("right")
    4. Dim min As Integer = Math.Min(left.Length, right.Length)
    5. Dim max As Integer = Math.Max(left.Length, right.Length)
    6. Dim outp(max - 1, 1) As T
    7. For i As Integer = 0 To min - 1
    8. outp(i, 0) = left(i)
    9. outp(i, 1) = right(i)
    10. Next
    11. If left.Length > right.Length Then
    12. For i As Integer = min To max - 1
    13. outp(i, 0) = left(i)
    14. outp(i, 1) = defaultValue
    15. Next
    16. ElseIf right.Length > left.Length Then
    17. For i As Integer = min To max - 1
    18. outp(i, 0) = defaultValue
    19. outp(i, 1) = right(i)
    20. Next
    21. End If
    22. Return outp
    23. End Function


    Allerdings ist es besser, auf Listen und Klassen/Strukturen oder dergleichen zurückzugreifen. Mehrdimensionale Arrays werden vom Großteil des Fws auch gar nicht unterstützt.

    Gruß
    ~blaze~
    dass jaggedArrays den Speicher nicht en bloc beanspruchen sehe ich als großen Vorteil.
    Über unterschiedlcihe Längen hab ich nicht nachgedacht, weil in post#1 steht ausdrücklich, sie seien gleich lang.
    Ansonsten, was du auch schon sagst:
    Vermutlich ist das alles Quatsch, und vernünftige Datensatz-Klassen müssen her.
    Aber dazu muss der TE sich äußern, was das ühaupt soll.

    joniator schrieb:

    multidimensionalen
    Ist denn die Zuordnung der Elemente des einen zu denen des anderen gesichert?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    joniator schrieb:

    multidimensionalen
    Ist denn die Zuordnung der Elemente des einen zu denen des anderen gesichert?

    Wie meinst du das? Also dass a=1 ist oder so? Wenn du das meinst, ja.
    @ErfinderDesRades : Kann man das auch mit mehreren arrays machen? z.b 3,4,5,6 usw.. ?(Hab da irgendwas falsch bei mehreren :D)
    mfg
    Wer Rechtschreibfehler findet darf sie behalten :)

    joniator schrieb:

    Wie meinst du das?
    Mach mal ein Beispiel mit Deinen Input-Arrays und dem gewollten Output-Array.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mal eine Frage: Meinst du das echt ernst? Deine ursprüngliche Frage hatte 1. NICHTS mit der jetzigen Problemstellung zu tun und 2. ist, wenn du dein Hirn verwendest, die Lösung bereits in Posting #2 drin. Ich schreib dir doch keinen Quellcode, damit du dann nicht mal eine Frage oder sonst was dazu stellst, wenn du ihn nicht verstehst. Wenn du ihn auch nur ansatzweise verstündest, wüsstest du, wie du ihn bspw. für ein mit ParamArray Array umprogrammierst. Dafür ist mir meine Zeit ehrlich zu schade.

    VB.NET-Quellcode

    1. Dim Tmplst As String = GetUncompressed(cli.DownloadString(Downloadval & "/Allv1.txt"))
    2. cli.Dispose()
    3. Dim splitted As String() = Tmplst.Split(CChar("|"))
    4. Dim onfilelst() As String = splitted(0).Split(CChar(":"))
    5. Dim onhashlst() As String = splitted(1).Split(CChar(":"))
    6. Dim allbytes() As String = splitted(2).Split(CChar(":"))


    Soo, und jetzt währs nett wenn eine array alle arrays beinhalted.(onfilelst(),onhashlst(),allbytes())
    @~blaze~ : ja danke, aber es ist ein wenig schwierig zu verstehen, und die ursprüngliche frage war eig. wie mehrere arrays zusammenfassen kann. Und wenn der nette erfinder mir eine einfache methode zur verfügung stellt möcht ich lieber die einfache variante nehmen , bitte nicht böse sein.
    Mfg
    Wer Rechtschreibfehler findet darf sie behalten :)

    joniator schrieb:

    war ein bisschen einfacher als gedacht
    Das geht allerdings nur zur Compile-Zeit, die Arrays a, b, c müssen als solche zur Verfügung stehen.
    Und beachte den Unterschied dieser Arrays:

    VB.NET-Quellcode

    1. Dim all_values()() As Integer = {a, b, c}
    und

    VB.NET-Quellcode

    1. Dim all_values(,) As Integer = {{1, 2}, {2, 3}, {3, 4}}
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!