<vector> - resize()



  • hi,

    ich habe hier nen vector von meiner klasse, in der ich dynamsch speicher allokiere. was muss ich tun, damit resize(...) ordentlich funktioniert? reicht's den "="-operator zu überlaen?



  • Entweder das oder den Copy Ctor (ich weiß es grad nicht). Und außerdem musst du aufpassen, weil Zeiger und Iteratoren auf die Elemente beim resizen ungültig werden.
    Oft ist es sinnvoll, in den vectoren nur Zeiger auf die eigentlichen Objekte abzulegen, dann hast du diesen Nachteil nicht, brauchst kein op= und effizienter ist es auch.
    Du hast dann natürlich als Preis dafür die Pflicht, den Speicher wieder freizugeben.



  • The Law Of The Big Three

    Es gibt das ungeschriebene Gesetz der großen Drei. Die großen Drei sind Kopierkonstruktor, Zuweisungsoperator und Destruktor. Diese 3 werden vom Compiler generiert wenn wir sie nicht selber schreiben. Die Regel besagt: sobald wir einen dieser 3 schreiben müssen wir die anderen Beiden auch schreiben.



  • ok, danke.

    hab' jetzt copy-constructor und operator= überladen. jetzt gibt's auch keine fehler mehr. (komisch nur, dass beim borland-compiler das ganze auch so lief - vermutlich irgendwelche bösen optimierungen bei der vector-implementation. oder zufall. )


Anmelden zum Antworten