Ich habe folgend shared_ptr
zu einem map
:Initialisierung std :: shared_ptr <std::map<>> mit verspannten-init
std::shared_ptr<std::map<double, std::string>>
und ich würde es initialisieren wie verspannt-init. Ist es möglich?
Ich habe versucht:
std::string s1("temp");
std::shared_ptr<std::map<double, std::string>> foo = std::make_shared<std::map<double, std::string>>(1000.0, s1);
aber das gibt den folgenden Fehler, wenn 6.3 unter Verwendung von Xcode kompiliert:
/usr/include/c++/v1/map:853:14: Candidate constructor not viable: no known conversion from 'double' to 'const key_compare' (aka 'const std::__1::less<double>') for 1st argument
ich andere Variationen des ersten Parameters versucht haben (1000.0) ohne Erfolg .
Kann jemand helfen?
möglich, aber nicht hübsch, 'std :: shared_ptr> foo = std :: mak e_shared > (std :: initialisiererliste :: wertetyp> {{1000.0, s1}}); ' –
oder einfach 'std :: shared_ptr> foo = std :: make_shared > (std :: map {{1000.0, s1}}); 'aber immer noch nicht nett –
Das funktioniert. Ich bemerke die Verwendung von 'value_type'. Ich sehe es nur 'typedef Paar'. Warum brauche ich das? –
ksl