namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:initialisiererliste
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:initialisiererliste [2019-01-13 14:09] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Initialisiererliste ======
 +
 +> // Die Kindheit ist vorbei, wenn man bei der Augsburger Puppenkiste die Fäden sieht. //
 +>>  --- Bastian Sick [Zwiebelfisch]
 +
 +===== Anfangswertbelegung =====
 +In [[..:kennen:begriffe#C++98]] mussten zum Befüllen von Containern Umwege in Kauf genommen werden.
 +<code cpp>
 +  double a[] = { 1.0, 2.718, 3.14 };
 +  std::vector<double> v(a, a+3);
 +  // oder:
 +  std::vector<double> v;
 +  v.push_back(1.0);
 +  v.push_back(2.718);
 +  v.push_back(3.14);
 +</code>
 +Ab [[..:kennen:begriffe#C++11]] 
 +können wie bei Feldern Wertfolgen in geschweiften Klammern angegeben werden,
 +wenn die Klasse unter Einbeziehen des Headers [[..:kennen:include:initializer_list]]
 +einen Konstruktor
 +<code cpp>
 +  Klassenname(std::initializer_list<Element> sequenz);
 +</code>
 +definiert.
 +Alle übergebenen Werte müssen vom selben (Ziel-)Typ sein.
 +<code cpp>
 +  std::vector<double> v = { 1.0, 2.718, 3.14 };
 +  std::vector<int> v1 = { 5 };    // ein Wert: 5 
 +  std::vector<int> v2 = { 6, 7 }; // zwei Zahlen
 +</code>
 +Fehlt das Gleichheitszeichen, haben Initialisiererlisten Vorrang vor anderen Konstruktoren mit gleicher Parameteranzahl.
 +<code cpp>
 +  std::vector<int> v3{};       // leer 
 +  std::vector<int> v4{ 5 };    // enthält einen Wert: 5 
 +  std::vector<int> v5{ 6, 7 }; // 2 Zahlen
 +  std::vector<int> v6(8);      // 8 Einträge mit Standardwert 0 
 +  std::vector<int> v7(9,10);   // 9 Einträge mit Wert 10 
 +</code>
 +
 +==== für auto-Variablen ====
 +
 +Ab [[..:kennen:begriffe#C++17]] gilt eine neue Regel für die Anfangswertbelegung von [[kennen:beispiel:auto]]-Variablen mit geschweiften Klammern.
 +
 +    auto i{42};        // neu: Ganzzahl; vorher: Liste mit einem Element
 +    auto j{1, 2};      // ist nun verboten
 +    auto k = { 1 };    // Liste mit 1 Element
 +    auto l = { 1, 2 }; // Liste mit 2 Elementen
 +
 +[[https://accu.org/index.php/journals/2379|Grässliche]] [[http://eel.is/c++draft/dcl.init|Einzelheiten]]
 +treiben 
 +[[http://scottmeyers.blogspot.com/2018/09/the-errata-evaluation-problem.html|Experten]]
 +[[https://mikelui.io/2019/01/03/seriously-bonkers.html|zur Verzweiflung]] (besser nicht hinschauen).
  
kennen/initialisiererliste.txt · Zuletzt geändert: 2019-01-13 14:09 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki