Vereinfachung der Vektorinitialisierung: Elegante Hardcoding-Optionen
Das Erstellen benutzerdefinierter Initialisierer für Arrays ist eine standardmäßige und unkomplizierte Vorgehensweise. Bei Vektoren kann es jedoch etwas schwieriger sein, einen ähnlichen Mechanismus zu finden. Die inhärente Frage ist, ob es eine Methode gibt, um Vektoren genauso sauber zu initialisieren wie Arrays. Lassen Sie uns die Lösungen erkunden.
Der Standardansatz umfasst, wie Sie erwähnt haben, push_back-Operationen:
std::vector<int> ints; ints.push_back(10); ints.push_back(20); ints.push_back(30);
Obwohl diese Methode ihren Zweck erfüllt, erreicht sie nicht die Eleganz der Array-Initialisierung.
C 11's geschweifte Initialisierung
Mit C 11 und kompatible Compiler wie GCC 4.4 können Sie die in geschweifte Klammern eingeschlossene Initialisierung für Vektoren nutzen:
std::vector<int> v = {1, 2, 3, 4};
Diese Syntax bietet eine prägnante und explizite Möglichkeit, Vektoren zu initialisieren.
Boost. Bibliothek zuweisen
Eine weitere Alternative ist die Verwendung der Boost.Assign-Bibliothek. Es bietet verschiedene Techniken zur Vektorinitialisierung:
Verwendung von list_of:
#include <boost/assign/list_of.hpp> ... std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);
Verwendung der =-Notation:
#include <boost/assign/std/vector.hpp> using namespace boost::assign; ... std::vector<int> v; v += 1, 2, 3, 4;
Beachten Sie jedoch, dass Boost.Assign einen gewissen Leistungsaufwand mit sich bringt aufgrund der zugrunde liegenden Mechanismen. Erwägen Sie für leistungsempfindlichen Code den push_back-Ansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich Vektoren in C elegant initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!