Heim > Backend-Entwicklung > C++ > „std::vector::reserve()' vs. „std::vector::resize()': Wann sollte ich welche verwenden?

„std::vector::reserve()' vs. „std::vector::resize()': Wann sollte ich welche verwenden?

Mary-Kate Olsen
Freigeben: 2024-12-18 02:11:15
Original
734 Leute haben es durchsucht

`std::vector::reserve()` vs. `std::vector::resize()`: When Should I Use Which?

std::vector::resize() vs. std::vector::reserve()

Beim Arbeiten mit dynamischen Arrays in C ist es wichtig, den Unterschied zwischen std::vector::reserve() und std::vector::resize() zu verstehen. Beide dienen bestimmten Zwecken und können sich erheblich auf die Leistung auswirken.

std::vector::reserve()

Wie der Name schon sagt, reserviert „reserve()“ Speicher für einen bestimmten Zeitraum Anzahl der Elemente, ohne die Größe des Vektors zu ändern. Dies ist nützlich, um die Speicherzuteilung zu optimieren, wenn Sie die maximale Anzahl der Elemente kennen, die Sie benötigen. Es vermeidet unnötige Neuzuweisungen, die auftreten, wenn der Vektor über seine aktuelle Kapazität hinauswächst.

std::vector::resize()

Auf der anderen Seite resize() Beide reservieren Speicher und ändern die Größe des Vektors auf die angegebene Größe. Im Gegensatz zu „reserve()“ fügt resize() dem Vektor leere (oder standardmäßig initialisierte) Elemente hinzu, wenn die neue Größe größer als die aktuelle Größe ist. Wenn die neue Größe kleiner ist, werden Elemente über der neuen Größe abgeschnitten.

Korrekte Verwendung im Beispiel

In Ihrem Beispielcode versuchen Sie, Elemente zu schreiben zum Vektor nach dem Aufruf von Reserve(). Dies führt zu Fehlern in Debug-Builds, da Reserve() die Größe des Vektors nicht ändert. Um Elemente korrekt in den Vektor zu schreiben, müssen Sie resize() verwenden:

void MyClass::my_method()
{
    my_member.resize(n_dim);
    for (int k = 0; k < n_dim; k++)
        my_member[k] = k;
}
Nach dem Login kopieren

Fazit

Sowohl std::vector::reserve() als auch std ::vector::resize() dienen unterschiedlichen Zwecken. Reserve() optimiert die Speicherzuweisung, während resize() die Größe des Vektors ändert und gleichzeitig die interne Datengültigkeit beibehält. Wenn Sie ihre Unterschiede verstehen, können Sie sie effektiv nutzen, um die Leistung Ihres C-Codes zu verbessern.

Das obige ist der detaillierte Inhalt von„std::vector::reserve()' vs. „std::vector::resize()': Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage