Heim >Backend-Entwicklung >C++ >Wie kann ich Vektoren in C elegant initialisieren?

Wie kann ich Vektoren in C elegant initialisieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-21 11:33:14214Durchsuche

How Can I Elegantly Initialize Vectors in C  ?

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!

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