Speichervorabzuweisung in Vektoren: Reserve() vs. Resize()
In Ihrem Szenario beabsichtigen Sie, Speicher für a vorab zuzuweisen Vektorelement mit dem Namen t_Names mit einer Anfangsgröße von 1000. Anschließend planen Sie, seine Kapazität um 100 zu erhöhen, wenn sie einen bestimmten Wert erreicht Schwellenwerte.
Was Ihre Wahl zwischen vector::resize() und vector::reserve() betrifft, dienen sie unterschiedlichen Zwecken.
resize() ändert die Größe des Vektors durch Erhöhen oder Verringern seiner Kapazität und Festlegen des Werts aller neuen Elemente auf das bereitgestellte Konstruktorargument (oder auf ihren Standardwert, falls dieser weggelassen wird). Das bedeutet, dass Sie direkt auf diese initialisierten Elemente zugreifen und diese durchlaufen können.
Reserve() hingegen reserviert lediglich Speicher für den Vektor, ohne irgendwelche Elemente zu initialisieren. Es hat keinen Einfluss auf die aktuelle Größe, erhöht jedoch die Kapazität. Wenn Sie nachträglich Elemente einfügen, ist keine Neuzuweisung erforderlich, da der Speicher im Voraus gesichert wurde.
In Ihrem Fall wird basierend auf der bereitgestellten Bearbeitung empfohlen, eine manuelle Vorabzuweisung zu vermeiden. Verlassen Sie sich stattdessen auf die automatische Neuzuweisung von Vector. Es optimiert diesen Prozess effizienter als die manuelle Vorbelegung.
Wenn Sie jedoch im Voraus eine genaue Schätzung der erforderlichen Größe haben, sollten Sie die Verwendung von Reserve() für die anfängliche Vorbelegung in Betracht ziehen. Bei Bedarf übernimmt der Vektor zusätzliche Neuzuweisungen, wenn Sie weitere Elemente einfügen.
Das obige ist der detaillierte Inhalt vonSollte ich „reserve()' oder „resize()' für die Vorabzuweisung von Speicher in C-Vektoren verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!