Grundsätzlich keine. Elemente im Vektor werden standardmäßig mit einer Größenänderung konstruiert (für eine ganze Zahl ergibt dies 0).
Angenommen, Sie verwenden reserve(), um sicherzustellen, dass resize() keinen Speicher zuweist, würde ich mir darüber keine Gedanken machen, es sei denn, es erweist sich später als Leistungsproblem.
Wenn Sie besorgt sind, möchten Sie vielleicht nur ein reguläres Array verwenden und die Elementanzahl in einer separaten Variablen speichern. Dadurch erhalten Sie die beste Leistung.
Update:
John fragte:
der Konstruktor Ist wirklich garantiert, dass der Speicher auf Null? Ich dachte, dass nicht definiert war?
Ja und nein. Die primitiven Typen (int, bool, float usw.) haben Standardkonstruktoren, die sie auf Null initialisieren. Im Gegensatz zu regulären Klassen oder Strukturen ruft der Compiler sie jedoch nicht automatisch auf.
Z. B
int a; // uninitialized
int b = int(); // initialized to 0
Da vector :: resize die letztere Form verwendet, wenn Elemente hinzufügen, die Sie garantiert werden, dass die erzeugten Elemente korrekt auf Null initialisiert werden. Dies gilt für alle STL-Sammlungen, die implizit Elemente erstellen.
Entschuldigung, ich verstehe Ihr Problem nicht - könnten Sie einen Beispielcode posten? –