ich habe ein std::vector<std::vector<double>>
und möchte einige Elemente am Ende, um es hinzuzufügen und so war mein Versuch:Emplacement eines Vektors mit Initialisiererliste
std::vector<std::vector<double> > vec;
vec.emplace_back({0,0});
aber nicht kompiliert, während das Folgende tun:
std::vector<double> vector({0,0});
Warum kann emplace_back nicht das Element an dieser Position konstruieren? Oder was mache ich falsch?
Danke für Ihre Hilfe.
Danke, aber ich habe noch eine Frage zu diesem: Warum ist es für das zweite Beispiel arbeiten? Da der Compiler ähnliche Informationen über den Typ hat (emplace_back erwartet, Argumente für einen Konstruktor von std :: vector zu bekommen, und so ist das zweite Beispiel) –
m47h
Weil im zweiten Beispiel Sie den Konstruktor von Vektor aufrufen, der die Initialisiererliste behandeln kann direkt. – marli
So effektiv Sie nicht platzieren, sondern nur ein bereits konstruiertes Element schieben, anstatt den Vektor an Ort und Stelle zu konstruieren. –