brace-initialization

___ qstnhdr ___ Initialisierung von std :: shared_ptrstd :: map mit braced-init ___ answer36446305 ___

Sie können es ohne %code% machen:

%Vor%     
___ qstntxt ___

Ich habe das folgende %code% zu einem %code% :

%Vor%

und ich möchte es mit braced-init initialisieren. Ist es möglich?

Ich habe es versucht:

%Vor%

aber das gibt den folgenden Fehler, wenn mit Xcode 6.3 kompiliert wird:

%Vor%

Ich habe andere Varianten des ersten Parameters (1000.0) ohne Erfolg ausprobiert.

Kann jemand helfen?

    
___ answer36446141 ___

Ihr Problem besteht darin, dass Sie keine Klammern in Ihren Initialisierer eingefügt haben. Ich brauchte Folgendes, um es zum Laufen zu bringen:

%Vor%

Die doppelte %code% Bugs mich. Es sollte wirklich in der Lage sein, einen von ihnen mit dem anderen auszuarbeiten ... aber gcc 5.3.0 würde keinen Ball spielen.

Sie werden definitiv die Doppelstreben brauchen. (Einmal sagen Sie, dass Sie eine Karte initialisieren, einmal um jeden Eintrag zu begrenzen.)

    
___ answer36446143 ___

%code% hat einen Initialisierungslisten-Konstruktor:

%Vor%

Wir können mit diesem Konstruktor ganz einfach eine Map erstellen:

%Vor%

Um es in %code% zu verwenden, müssen wir angeben, welche Instanz von %code% wir bereitstellen:

%Vor%

Das sieht wirklich ungeschickt aus; aber wenn Sie das regelmäßig brauchen, können Sie es mit Aliasen aufräumen:

%Vor%

Sie könnten stattdessen lieber eine Vorlagenfunktion definieren, um den Anruf zu umbrechen:

%Vor%     
___ answer36445879 ___

Etwas Ähnliches sollte es tun ...

%Vor%

oder als oneliner

%Vor%

(Sorry, zuerst verpasste die Anforderung für die Initialisierungsliste)

    
___ answer36446008 ___

Ändern Sie den Typ des Schlüssels.

%code% ist ein falscher Typ für Schlüssel, da es kein %code% dafür gibt und verschiedene Bytefolgen denselben Fließkommawert darstellen können.

    
___ tag123braceinitialisierung ___ hilf uns dieses Wiki zu bearbeiten ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123sharedptr ___ Referenzzähler für Smart-Pointer-Klassen, die das gemeinsame Eigentum implementieren ___ tag123stdmap ___ std :: map ist eine Klasse in der C ++ - Standardbibliothek. Es ist ein sortierter assoziativer Container, der Schlüssel / Wert-Paare mit eindeutigen Schlüsseln enthält. Suchen, Entfernen und Einfügen Operationen haben logarithmische Komplexität. Karten werden normalerweise als rot-schwarze Bäume implementiert. ___ tag123c11 ___ C ++ 11 ist eine 2011 verabschiedete Version des C ++ - Sprachstandards. Sie hat viele Änderungen und Ergänzungen der Kernsprache sowie der verbesserten und erweiterten C ++ - Standardbibliothek vorgenommen. ___
2
Antworten

float Initialisierung von double mit geschweiften Klammern

Warum warnt der Compiler (clang, gcc) nicht davor, Conversions zu verringern? %Vor% Ich habe eine Warnung erwartet, weil ich explizite Wert-Initialisierung mit geschweiften Klammern mache. Nach dieser Antwort Link sollte ein Fehler ausgege...
25.11.2016, 13:10
1
Antwort

Welche Auswirkungen hat das Umschließen einer Initialisierungsliste in Klammern?

Welche Auswirkungen hat das Umschließen einer Initialisierungsliste in Klammern? Ist es einfach ein anderes Formular für die Initialisierung der Liste oder funktioniert es nur in bestimmten Szenarien? Beispiel: a : %Vor%     
19.09.2017, 19:45
2
Antworten

C ++ implizite Konvertierungen mit geschweiften Initialisierern

Ich habe kürzlich irgendwo gelesen (kann mich nicht erinnern, wo), geschweifte Klammern zu verwenden, um mehrere benutzerdefinierte Konvertierungen zu erlauben, aber es scheint einen Unterschied zwischen Konversion durch Konstruktor und Konverti...
27.05.2016, 11:40
5
Antworten

Initialisierung von std :: shared_ptrstd :: map mit braced-init

Ich habe das folgende shared_ptr zu einem map : %Vor% und ich möchte es mit braced-init initialisieren. Ist es möglich? Ich habe es versucht: %Vor% aber das gibt den folgenden Fehler, wenn mit Xcode 6.3 kompiliert wird: %Vor%...
06.04.2016, 08:32