171 Stimmen

C++, Kopiersatz auf Vektor

Ich muss kopieren std::set à std::vector :

std::set <double> input;
input.insert(5);
input.insert(6);

std::vector <double> output;
std::copy(input.begin(), input.end(), output.begin()); //Error: Vector iterator not dereferencable

Wo liegt das Problem?

3voto

Mostafa Wael Punkte 883
set<T> s;
// some code
vector<T> v;
v.assign(s.begin(), s.end());

1voto

Bradley Swain Punkte 804

std::copy kann nicht zum Einsetzen in einen leeren Behälter verwendet werden. Dazu müssen Sie einen insert_iterator wie folgt verwenden:

std::set<double> input;
input.insert(5);
input.insert(6);

std::vector<double> output;
std::copy(input.begin(), input.end(), inserter(output, output.begin()));

0voto

ashish_nandan Punkte 1

Die Funktion COPY gibt einen Iterator zum Ende des Zielbereichs zurück (der auf das Element zeigt, das auf das letzte kopierte Element folgt).

Ein Back-Insert-Iterator ist ein spezieller Typ von Ausgabe-Iterator, der es Algorithmen, die normalerweise Elemente überschreiben (wie z. B. copy), ermöglicht, stattdessen automatisch neue Elemente am Ende des Containers einzufügen.

os einstellen; Vektor vec;

copy(os.begin(), os.end(), back_inserter(vec));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X