Heim > Backend-Entwicklung > C++ > Wie initialisiere ich effizient einen „std::vector' aus einem Array im C-Stil?

Wie initialisiere ich effizient einen „std::vector' aus einem Array im C-Stil?

Patricia Arquette
Freigeben: 2024-11-09 14:22:02
Original
470 Leute haben es durchsucht

How to Efficiently Initialize a `std::vector` from a C-style Array?

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?
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

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