Heim > Backend-Entwicklung > C++ > Hauptteil

Wie initialisiere ich einen std::vector mit bestimmten Elementen ohne Schleifen?

Mary-Kate Olsen
Freigeben: 2024-10-24 03:08:02
Original
287 Leute haben es durchsucht

How to Initialize a std::vector with Specific Elements Without Loops?

So initialisieren Sie einen std::vector mit hartcodierten Elementen wie ein Array

Initialisieren eines std::vector mit einer Liste hartcodierter Elemente könnte im Vergleich zur Einfachheit der Initialisierung eines Arrays mühsam erscheinen. Der übliche Ansatz besteht darin, Elemente mithilfe von push_back() iterativ auf den Vektor zu verschieben. Aber gibt es eine elegantere Lösung, die die prägnante Syntax der Array-Initialisierung widerspiegelt?

Die elegante Lösung von C 11

Wenn Ihr Compiler C 11 unterstützt, ist die Antwort klar Ja. Sie können einen std::vector direkt mit einer in {} eingeschlossenen Liste von Elementen initialisieren:

<code class="cpp">std::vector<int> v = {1, 2, 3, 4};</code>
Nach dem Login kopieren

Diese Syntax ahmt die Array-Initialisierung nach und macht Schleifen oder push_back() überflüssig.

Alternativen für ältere Compiler

Für Compiler, die C 11 nicht unterstützen, gibt es alternative Methoden:

Boost.Assign Library:

Die Boost.Assign-Bibliothek bietet eine praktische Möglichkeit, Vektoren mit der folgenden Syntax zu initialisieren:

<code class="cpp">#include <boost/assign/list_of.hpp>
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);</code>
Nach dem Login kopieren

Operatorüberladung:

Sie können das = überladen Operator zum Initialisieren eines Vektors:

<code class="cpp">#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
std::vector<int> v;
v += 1, 2, 3, 4;</code>
Nach dem Login kopieren

Beachten Sie, dass diese Methode im Vergleich zur direkten Initialisierung einen gewissen Leistungsaufwand mit sich bringt, sodass sie für leistungskritischen Code weniger geeignet ist.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich einen std::vector mit bestimmten Elementen ohne Schleifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!