Für Objekt durch eine solche Struktur geschaffen werden Sie Konstruktor zur Verfügung stellen müssen, die std::initializer_list und std::vector
one (8) hat akzeptiert:
// c++11 initializer list syntax:
std::vector<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
:
Sie ein Beispiel auch auf dieser Seite sehen
vector(std::initializer_list<T> init,
const Allocator& alloc = Allocator());
Hinweis: C++ 11 ermöglicht auch die Initialisierung von Objekten durch geschweifte Klammern:
Someobject {
Someobject(int){}
};
Someobject obj1(1); // usual way
Someobject obj2{1}; // same thing since C++11
aber Sie müssen jedoch vorsichtig sein, wenn das Objekt Ctor erwähnt wird, bevor es stattdessen verwendet werden würde:
std::vector<int> v1(2); // creates vector with 2 ints value 0
std::vector<int> v2{ 2 }; // creates vector with 1 int value 2
Hinweis 2: für Ihre Frage, wie die Liste erstellt es in der Dokumentation beschrieben:
Ein std :: initialiser_list -Objekt wird automatisch erstellt, wenn:
eine braced-init-Liste in der Listeninitialisierung verwendet wird, einschließlich der Initialisierungs- und Zuweisungsausdrücke der Funktionsauflistungsliste
eine verspannt-init-Liste wird automatisch gebunden, auch in einer for-Schleife reichte
Wie wird die initialiser Liste aus der geschweiften Klammern Liste erstellt? Ist es ein konvertierender Konstruktor seitens der Initialisiererliste? – Zebrafish
Danke. Ich werde nie aufhören, diese Sprache zu lernen. – Zebrafish