Effiziente Zuweisung eines std::vector aus einem Array im C-Stil
Wenn Sie auf die Aufgabe stoßen, einen std::vector aus einem zu initialisieren Bei Arrays im C-Stil ist es wichtig, sowohl Effizienz als auch Komfort zu berücksichtigen. Diese Situation entsteht, wenn externe Einschränkungen vorschreiben, dass Daten in einem Array-Format im C-Stil bereitgestellt werden, wie im folgenden Klassenbeispiel dargestellt:
class Foo { std::vector<double> w_; public: void set_data(double* w, int len){ // how to cheaply initialize the std::vector? }
Um den std::vector effizient zu initialisieren, können wir diese Tatsache nutzen dass Array-Zeiger im C-Stil auch als Iteratoren behandelt werden können. Dadurch können wir vermeiden, einen Zwischencontainer zu erstellen oder einzelne Elemente zu durchlaufen:
Elegante und effiziente Lösung:
w_.assign(w, w + len);
Hier ist w der Zeiger auf das erste Element im Array im C-Stil, und w len zeigt auf das Ende des Arrays. Durch die Verwendung der Zuweisungsfunktion mit Iteratoren werden die Vektorelemente automatisch aus den Array-Elementen erstellt. Diese Methode ist nicht nur effizient, sondern auch prägnant und elegant.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich effizient einen „std::vector' aus einem Array im C-Stil?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!