Mehrdimensionalen std::vector splitten?



  • Hallo Leute,

    ich bin ziemlich im Stress und habe momentan leider auch kein Kopf dafür...

    Ich habe einen mehrdimensionalen Vector:

    std::vector<std::vector<std::string> > vect(2, std::vector<std::string>());
    

    Er wird per Referenz an eine Methode übergeben, die ihn erstmal komplett mit allen vorhandenen Daten füllt.
    Er ist nun so aufgebaut:

    [std::string Key0] [std::string Value0]
    [std::string Key1] [std::string Value1]
    [std::string Key2] [std::string Value2]
    [std::string Key3] [std::string Value3]
    [std::string Key4] [std::string Value4]
    [std::string Key5] [std::string Value5]
    ..
    .
    

    Nun soll dieser der nächsten Methode übergeben werden.

    Da es sich allerdings um mehrere Datensätze innerhalb des Vectors handeln kann, wird im Vector ggf. ein bestimmter Key + Value gesetzt.
    Dieser kann ggf. an irgendeiner Stelle KeyX == "STOP" haben(Bsp.: Key5)

    Bsp.:

    Key1 - Inhalt
    Key2 - Inhalt
    Key3 - Inhalt
    Key4 - Inhalt
    Key5 - STOP
    Key6 - Inhalt
    Key7 - Inhalt
    Key8 - Inhalt
    Key9 - Inhalt

    Falls KeyX == STOP eintreffen sollte, möchte ich ab der nächsten Stelle [Key6 - Inhalt] die Daten in einen neuen Vector kopieren, bis ein neues "STOP" auftritt oder bis zum Ende.

    Kann mir jemand ein Beispiel geben oder sonstiges?

    Hoffe ihr habt es verstanden, momentan ist es ziemlich stressig 😕

    Danke


  • Mod

    Wenn es so stressig ist, dann mach das doch einfach schnell von Hand mit einer kleinen Schleife. Man kann das zwar auch als schicken Einzeiler mit den algorithms formulieren (und die Arbeit dann in einem Funktor/Lambdaausdruck machen), aber effektiv würde der gleiche Code erzeugt und es wird kaum weniger lesbar sein.

    Und bist du sicher, dass du nicht vector<pair<string, string>> oder map<string, string> möchtest?



  • Hast du immer fest 2 Vektoren im Vektor mit dem Aufbau key -> value?
    Dann könntest dir auch ein vector<pair<string,string>> machen, da ist das Aufsplitten dann einfacher oder evtl. eine Map, je nach Einsatzweck.



  • Oh, scheisse, pair - natürlich ! Das gibt es ja auch noch!! 😡 😡

    Damit hätte ich mir paar Dinge leichter machen können 😡

    DANKE!! 👍



  • Oder einfach die schon genannte map/multimap/unordered_map/unordered_multimap.



  • Ja, das habe ich gerade auch noch gemerkt und ist noch besser.

    Danke Leute 🙂


Anmelden zum Antworten