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!