Heim >Backend-Entwicklung >C++ >Wie kann ich einen std::vector elegant mit hartcodierten Elementen in C initialisieren?
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!