Heim  >  Artikel  >  Backend-Entwicklung  >  Wie initialisiere ich einen std::vector mit bestimmten Elementen ohne Schleifen?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-24 03:08:02287Durchsuche

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>

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>

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>

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!

Stellungnahme:
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