STL: set und copy
-
Hallo Gurus,
wenn ich zwei sets habe
set<int> a; //leer
set<int> b; //enhält 100 elementeund dann
copy(b.begin(), b.end(), a.begin());mache, ist a immer noch leer. Warum?!
Vielen Dank für Ihre Unterstützung,
Raphael
-
Weil a leer ist zeigt begin() bereits hinter den Container. Da copy nichts anderes macht als von rechts nach links zu kopieren (Name!) befüllst Du hier lauter ungültige Elemente. Ein Wunder dass das Programm noch keine Naturkatastrophe ausgelöst hat

Du musst den Container schon vorher allokieren, oder einen Inserter benutzen (weiss allerdings nicht ob set mit nem back_inserter klarkäme).
EDIT:
Ein insert_iterator wäre was für Dich, oder gleich die Methode insert von std::set:a.insert( b.begin(), b.end() );
-
Ein back_inserter benötigt push_back und das gibt es bei set nicht. copy geht hier also nicht.
-
Mit einem normalen std::inserter geht auch std::copy.
copy( a.begin(), a.end(), inserter( b, b.end() ) );
-
Ich danke!
Jetzt: 