std::vector



  • Hallo,
    ganze kurze frage:

    std::vectorstd::string MessageList
    std::vectorstd::string TitleList

    finden beide in meinem Code Platz.
    Jedoch laufen sie nur einzeln und nicht zusammen, wieso?



  • Puhbär11 schrieb:

    Hallo,
    ganze kurze frage:

    std::vectorstd::string MessageList
    std::vectorstd::string TitleList

    finden beide in meinem Code Platz.
    Jedoch laufen sie nur einzeln und nicht zusammen, wieso?

    ?? 😕

    vielleicht können sie sich nicht leiden?
    Sorry, aber ich hab keine ahnung was du meinst!



  • Geht das auch auf Deutsch? Was hast du und was willst du damit erreichen?



  • Also nochmal, ich habe ungefähr null Plan von C++,
    mache sonst auch nur C.
    Jedenfalls hab ich mir einen Code geschrieben wie ich eine Art "Array" brauche.
    Dafür habe ich

    std::vectorstd::string MessageList

    genutzt, weil ich gehört habe das soll sowas ähnliches sein!?!!?

    Nun habe ich "MessageList" gefüllt mit Messages ;).
    Dazu kommt noch

    std::vectorstd::string MessageList

    befüllt mit ........................Titles!!!
    So, dann nutze ich die Funktion find:

    if(std::find(MessageList.begin(), MessageList.end(), msg) == MessageList.end())
    {
    std::cout<< blablubbli
    MessageList.push_back(msg);
    }

    und genau das selbe für TitleList.
    Wenn ich das Prog dann ausführe gibts diesen Fehler:

    ---------------------------
    stanag.exe - Fehler in Anwendung
    ---------------------------
    Die Anweisung in "0x00402d7c" verweist auf Speicher in "0x00000000". Der Vorgang

    "read" konnte nicht auf dem Speicher durchgeführt werden.

    Klicken Sie auf "OK", um das Programm zu beenden.
    Klicken Sie auf "Abbrechen", um das Programm zu debuggen.
    ---------------------------
    OK Abbrechen
    ---------------------------

    WIESO?



  • Und sollen wir uns aus den Fragmenten jetzt etwas zusammenraten? Zeig mal bitte ein compilierbares Beispielprogramm, in dem der Fehler auftritt.



  • "msg" ist nicht zufällig ein Zeiger auf char mit dem Wert (Adresse) "0x00000000"?



  • Puhbär11 schrieb:

    Also nochmal, ich habe ungefähr null Plan von C++,...

    Ich glaube, das solltest Du ändern, wenn Du C++ nutzen willst. 😉

    ...
    if(std::find(MessageList.begin(), MessageList.end(), msg) == MessageList.end())
    {
          std::cout<< blablubbli
          MessageList.push_back(msg);
    }
    ...
    

    Sieht aus, als ob Du mit einer std::set besser bedient wärst als mit einem std::vector. Set sorgt schon von sich aus dafür, dass jeder Wert nur einmal vorkommt...

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Sieht aus, als ob Du mit einer std::set besser bedient wärst als mit einem std::vector.

    Nicht wenn's eine Liste sein soll 😉



  • finix schrieb:

    Simon2 schrieb:

    Sieht aus, als ob Du mit einer std::set besser bedient wärst als mit einem std::vector.

    Nicht wenn's eine Liste sein soll 😉

    Der Hinweis auf "Liste" ist allerdings nur im Variablennamen versteckt, während die Eindeutigkeit beim Einfügen in Code gegossen wurde ... 😉

    Aber stimmt schon: Je besser er die diversen Container kennt, desto gezielter kann er seine Anforderungen bestimmen und umsetzen (vielleicht will er ja "map"-artig noch MSG-IDs vergeben ?).

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Der Hinweis auf "Liste" ist allerdings nur im Variablennamen versteckt, während die Eindeutigkeit beim Einfügen in Code gegossen wurde ... 😉

    Noch viel schlimmer, er nutzt std::vector statt std::list . Das alles verhindert aber nicht dass es sich konzeptionell um eine Liste mit einzigartigen Elementen handeln kann.


Anmelden zum Antworten