Heim > Backend-Entwicklung > C++ > Wie kann ich einen std::vector elegant mit hartcodierten Elementen in C initialisieren?

Wie kann ich einen std::vector elegant mit hartcodierten Elementen in C initialisieren?

Susan Sarandon
Freigeben: 2024-12-22 20:29:59
Original
221 Leute haben es durchsucht

How Can I Elegantly Initialize a std::vector with Hardcoded Elements in C  ?

Elegante Initialisierung von std::vector mit hartcodierten Elementen

Während es einfach ist, ein Array in C zu initialisieren, z. B. int a[] = {10, 20, 30}, die Initialisierung eines std::vector auf ähnliche Weise mag erscheinen umständlich. Hier sind zwei elegante Möglichkeiten, um das gleiche Ergebnis zu erzielen:

C 11-Initialisierungsliste

In C 11 und höher können Sie Initialisierungslisten verwenden, um einen Standard zu initialisieren:: Vektor direkt:

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

Diese Syntax wird von GCC ab Version 4.4 unterstützt. Allerdings unterstützt VC 2010 diese Funktion noch nicht.

Boost.Assign-Bibliothek

Alternativ bietet die Boost.Assign-Bibliothek eine praktische Möglichkeit, einen std: zu initialisieren: Vektor:

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

Oder:

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

Hinweis dass die letztgenannte Syntax aufgrund der internen Verwendung eines std::deque einen leichten Mehraufwand mit sich bringt. Erwägen Sie daher für leistungskritischen Code die direkte Verwendung der Initialisierungsliste std::vector, wie von Yacoby in der ursprünglichen Frage vorgeschlagen.

Das obige ist der detaillierte Inhalt vonWie kann ich einen std::vector elegant mit hartcodierten Elementen in C initialisieren?. 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