tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von rd4eva
  • 1 Beitrag von Shakie
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
756
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Da schreib ich nun, hab mehrere Links durchforstet - und weiß, dass ich im Endeffekt hier die besten Antworten bekomme.

    Gegeben ist ein Algorithmus, der mir mehrere Int-Listen in Laufzeit erstellt, nicht nacheinander, sondern die Listen werden quer gefüllt. Mal wird dem ersten Array eine Zahl hinzugefügt, dann dem 4., just wieder eine neue leere Liste erstellt, dann wieder mal dem 2. etc.pp. Am Ende habe ich ein zweidimensionales Array mit zB 8 Listen von verschiedener Länge.

    So einfach es ist, in php, ein Array dynamisch aufzufüllen, so schwer gestaltet sich die Sache jetzt unter c# - für mich.. Mit vielrumkopieren und wieder in Listen packen, danach für die Ausgabe wieder entpacken ist mir nicht geholfen - eine statische Liste/Array hilft auch nicht, da ich keine Ahnung habe, ob es 8 oder 64 Listen sein werden, dynamisch eben.

    Ich hab mir das Konzept von Listen in Listen (list<list<int>>) angeschaut, doch wie es ausschaut, muß ich erst die innere Liste fertigstellen, bevor ich sie in die äußere packen kann.

    Nun denn, langer Rede kurzer Sinn, so sehen die Daten zB aus:
    Code :
    1
    2
    3
    4
    
    Cluster[0]=(0,3,7,9,12,34,36)
    Cluster[1]=(2,10,11,13)
    Cluster[2]=(17,18,19,20,21,22,23,24,25)
    Cluster[3]=(8,14,15,16,54,55,56)
    Und so sieht der Befehl aus, den ich grad aus JS umsetzen will:
    Code :
    1
    
    Cluster[C].push[i];

    Wie mach sowas nun ohne Riesenrattenschwanz unter .net/c#?

    mfg chmee
    Geändert von chmee (23.01.11 um 10:42 Uhr)
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  2. #2
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    eine statische Liste/Array hilft auch nicht, da ich keine Ahnung habe, ob es 8 oder 64 Listen sein werden, dynamisch eben.
    Das spielt doch bei Listen keine Rolle. Mit Listen kannst du in c# im Prinzip genauso werkeln wie in php mit arrays.
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    List<List<int>> fooBar = new List<List<int>>();
     
                /* beliebige Anzahl an Listen hinzufügen */
                Random rnd = new Random();
                int listCount = rnd.Next(0, 64);
     
                for (int i = 0; i < listCount; i++)
                {
                    fooBar.Add(new List<int>());
                }
     
                /* Verschiedenen Listen neue Elemente hinzufügen */
                
                for (int i = 0; i < 100; i++)
                {
                    int listIndex = rnd.Next(0, fooBar.Count);
                    fooBar[listIndex].Add(rnd.Next());
                }

    Du kannst aber auch die push Methode für "standard" Arrays implementieren.
    Beispielsweise so:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public static class ArrayExtensions
        {
            public static T[] Push<T>(this T[] array, T val)
            {
                T[] temp = new T[array.Length + 1];
     
                array.CopyTo(temp, 0);
                temp[temp.Length - 1] = val;
     
                return temp;
            }
        }
    Code csharp:
    1
    2
    
    int[] bla = new int[] { 0, 1 };
    bla = bla.Push(2);
    chmee bedankt sich. 
    In order to understand recursion, one must first understand recursion.

  3. #3
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Zitat Zitat von chmee Beitrag anzeigen
    Ich hab mir das Konzept von Listen in Listen (list<list<int>>) angeschaut, doch wie es ausschaut, muß ich erst die innere Liste fertigstellen, bevor ich sie in die äußere packen kann.
    Nein. Instanzen von List-Klassen kann man weder als "fertig" noch als "unfertig" bezeichnen. Du kannst zu jeder Zeit Items hinzufügen oder entfernen (außer die Instanz ist Readonly). Du kannst also problemlos Folgendes machen:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    List<List<int>> masterliste = new List<List<int>>();
    List<int> subliste1 = new List<int>();
    subliste1.Add(123);
    masterliste.Add(subliste);
    subliste1.Add(456);
    List<int> subliste2 = new List<int>();
    masterliste.Add(subliste);
    subliste1.Add(789);
    subliste2.Add(42);
    // oder auch wieder eine Subliste entfernen
    masterliste.Remove(subliste1);
    // oder nur den Inhalt einer Subliste entfernen
    subliste2.Clear();
    // usw.
    Geändert von Shakie (23.01.11 um 16:04 Uhr)
    chmee bedankt sich. 
    hihi = -h²

  4. #4
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Danke Euch Beiden - Tatsächlich ist es so, dass ich in blindem Eifer so gecodet habe, wie Ihr es beschreibt. Es funktionierte nicht, immer wieder eine Exception wegen falschem Index.. Als ob es die "Listenstelle" zB 3 noch nicht gab. Andere Seiten haben immer wieder lediglich das von mir genannte Beispiel genannt (innere Liste, dann äußere), wodurch ich dachte, es ginge nicht. Nachdem ich hier den ersten Eintrag gelesen hab, einfach genauer hingeschaut und siehe da, der Fehler war, dass ich die Initialisierung der inneren Liste zweimal gemacht habe - vor dem Funktionsaufruf und innerhalb der Funktion.

    Kurz und Bündig. ich danke Euch vielmals - Vor Allem hat die Welt ein weiteres Beispiel für mehrdimensionale Listen bekommen (und von mir ein Sorry, es war spät und ich war nicht mehr ganz dabei, scheinbar..)

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.12.08, 07:07
  2. Antworten: 5
    Letzter Beitrag: 30.04.07, 15:03
  3. [c++] Mehrdimensionales Array
    Von WhiteNazgul im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 18.11.03, 20:55
  4. Mehrdimensionales Array
    Von Texaner im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 17.11.03, 19:56
  5. mehrdimensionales array
    Von kimbo im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.10.03, 09:55

Stichworte