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
Susan SarandonOriginal
2024-12-22 20:29:59149Durchsuche

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};

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);

Oder:

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

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!

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