Sie müssen Folgendes verwenden back_inserter
:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copy
fügt dem Container, in den Sie einfügen, keine Elemente hinzu: es kann nicht; Es hat nur einen Iterator im Container. Wenn Sie einen Ausgabe-Iterator direkt an übergeben std::copy
, müssen Sie daher sicherstellen, dass er auf einen Bereich verweist, der mindestens groß genug ist, um den Eingabebereich aufzunehmen.
std::back_inserter
Erstellt einen Ausgabe-Iterator, der push_back
für jedes Element einen Container aufruft , sodass jedes Element in den Container eingefügt wird. Alternativ könnten Sie eine ausreichende Anzahl von Elementen in erstellt haben std::vector
, um den zu kopierenden Bereich aufzunehmen:
std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());
Oder Sie können den std::vector
Bereichskonstruktor verwenden:
std::vector<double> output(input.begin(), input.end());
assign()
Funktion:output.assign(input.begin(), input.end());