alternative zu std::vector?



  • Das Problem ist wohl, dass sowas wie push_back nicht funktioniert, weil das einen Zuweisungsoperator braucht.

    Da bleibt eigentlich nichts anderes übrig als Zeiger zu speichern. shared_ptr oder instrusive_ptr wären aber sinnvoller (gibts auf boost.org).

    std::vector<type *> vec;
    


  • TyRoXx schrieb:

    Da bleibt eigentlich nichts anderes übrig als Zeiger zu speichern. shared_ptr oder instrusive_ptr wären aber sinnvoller (gibts auf boost.org).

    Dann aber Pointer Container: http://highscore.de/cpp/boost/smartpointers.html#smartpointers_pointer_container



  • ok vielen Dank für die Antworten, ich werde mir wohl endlich mal die boost library anschauen müssen^^



  • TyRoXx schrieb:

    Das Problem ist wohl, dass sowas wie push_back nicht funktioniert, weil das einen Zuweisungsoperator braucht.

    wuss? wie bitte?
    und wie das ohne assignment operator geht 😉
    (copy-ctor ist nötig, aber der ist ja unproblematisch bei "const" - wäre nur bei noncopyable ein ding)



  • hustbaer schrieb:

    und wie das ohne assignment operator geht 😉
    (copy-ctor ist nötig, aber der ist ja unproblematisch bei "const" - wäre nur bei noncopyable ein ding)

    Ich habe es ausprobiert und Visual C++ verlangt den Operator.



  • Ja. Ich denke ich hatte auch mal so was ähnliches. Müsste es mal testen, ob es wirklich das war..



  • TyRoXx schrieb:

    hustbaer schrieb:

    und wie das ohne assignment operator geht 😉
    (copy-ctor ist nötig, aber der ist ja unproblematisch bei "const" - wäre nur bei noncopyable ein ding)

    Ich habe es ausprobiert und Visual C++ verlangt den Operator.

    Ich habe es auch ausprobiert bevor ich meine Antwort gepostet habe, und Visual C++ (2008) braucht den Operator definitiv nicht (für push_back()) 😉

    Du hast aber glaube ich trotzdem Recht, denn für erase() und Dergleichen wird IIRC der Assignment Operator gebraucht. An das hatte ich nicht gedacht.

    EDIT: ARGH! ALLES UNFUG! SORRY! /EDIT



  • hustbaer schrieb:

    Ich habe es auch ausprobiert bevor ich meine Antwort gepostet habe, und Visual C++ (2008) braucht den Operator definitiv nicht (für push_back()) 😉

    Wie hast du das gemacht?



  • .....



  • HurgaHurga schrieb:

    hustbaer schrieb:

    Ich habe es auch ausprobiert bevor ich meine Antwort gepostet habe, und Visual C++ (2008) braucht den Operator definitiv nicht (für push_back()) 😉

    Wie hast du das gemacht?

    Alter Schwede das ist mir jetzt peinlich!
    Wie?
    Ganz einfach: indem ich vergessen habe das const beim Member dazuzuschreiben 🙄 🙄 🙄

    Wobei ich nicht ganz checke, wieso std::vector::push_back vom MSVC so implementiert ist, wie es nunmal implementiert ist. Nämlich über insert(). Klar dass insert() den Assignment-Operator braucht. Nur dass push_back ihn nicht brauchen würde.


Anmelden zum Antworten