Kann in einem vector jemals eine Verringerung der Kapazität beim Löschen aller Elemente stattfinden?



  • @camper
    Mir ist klar was passiert.
    Hier ging es aber glaube ich um die Frage was und vor allem wo der Standard das garantiert bzw. vorschreibt.

    Gibt es eine Passage in der Beschreibung von vector::swap (oder sonstwo) die das wirklich klar sagt, oder ist es nur impliziert?



  • hustbaer schrieb:

    Gibt es eine Passage in der Beschreibung von vector::swap (oder sonstwo) die das wirklich klar sagt, oder ist es nur impliziert?

    Es steht explizit im Std., dass capacity() mitgetauscht wird. (kein Exemplar zur Hand... 😞 )
    Etwas unterspezifiziert, bzw. ungenau finde ich jetzt, ob in campers Beispiel, die Eigenschaft "für diesen Vector wurde reserve() aufgerufen" "mitgeswapped" wird.



  • hustbaer schrieb:

    Gibt es eine Passage in der Beschreibung von vector::swap (oder sonstwo) die das wirklich klar sagt, oder ist es nur impliziert?

    Der Standard verlangt, dass iteratoren gültig bleiben nur eben jetzt auf den anderen Container verweisen.



  • OK, das sollte dann reichen 🙂



  • hustbaer schrieb:

    OK, das sollte dann reichen 🙂

    Also sind wir uns einig, dass es die geforderte Garantie nicht gibt?
    Diejenigen, die das Gegenteil behauptet haben sind schließlich einen Beweis schuldig geblieben.
    Was fuer den Standard spricht: eine definitive Aussage in die eine oder andere Richtung wäre eine Einschränkung der Implementierung. (Speicher wird immer
    freigebeben/nie freigegeben).

    @pumuckl: Polemik ignoriert.



  • Furble Wurble schrieb:

    hustbaer schrieb:

    OK, das sollte dann reichen 🙂

    Also sind wir uns einig, dass es die geforderte Garantie nicht gibt?

    Weiss nicht.
    Von welcher Garantie sprichst du jetzt genau?


  • Mod

    Furble Wurble schrieb:

    Also sind wir uns einig, dass es die geforderte Garantie nicht gibt?

    Ich geht mal davon aus, dass das nicht so gemeint ist, wie es dasteht...

    Ein Blick sollte auch auf 1102. std::vector's reallocation policy still unclear [NAD] geworfen werden.



  • hustbaer schrieb:

    Furble Wurble schrieb:

    hustbaer schrieb:

    OK, das sollte dann reichen 🙂

    Also sind wir uns einig, dass es die geforderte Garantie nicht gibt?

    Weiss nicht.
    Von welcher Garantie sprichst du jetzt genau?

    Moin!
    Ich sprach von der Garantie, dass weder blei clear() noch bei resize(0) sich die capacity aendert, insbesondere verringert werden kann...

    campers Link ist interessant. Leider ist die "complex argumentation chain about four different places in the standard", die den TE und mich überzeugen sollte nicht ausgeführt. 😞
    Allerdings gebe ich mich geschlagen - gegen ein Konsens im Standardkomitee will ich gar nicht argumentieren... 😉


Anmelden zum Antworten