Ich habe ein Code-Snippet wie dieses, das unter VC ++ 2010 kompiliert wird.
%Vor%Soweit ich das beurteilen kann, sollte das funktionieren. Ich bekomme jedoch Build-Fehler:
%Vor%Dafür habe ich explizite Template-Parameter-Deklaration gemacht:
%Vor%Aber ich habe die gleichen Fehler. Mein Problem hier ist, dass im zweiten Fall, wenn ich einen const_iterator übergeben würde, sollte es mit einem Konvertierungsfehler zwischen const_iterator und Iterator fehlschlagen, da der Parametertyp nicht zusammenpassen würde. Was vermisse ich hier? (Ich kenne die "Inserter" -Form von set_intersection, aber ich möchte lernen, was ich hier falsch mache)
Das Ausgabeargument für std::set_intersection
muss veränderbar sein
%Code%. Die Iteratoren von value_type
unterstützen niemals Mutationen,
da sich der Wert eines Elements ändern könnte, wo es hingehört
der Satz. Funktionen in der Gruppe mit std::set
sind entworfen
um an sortierten Sequenzen zu arbeiten, z.B. %Code%.
In Ihrem Fall können Sie entweder std::set_iterator
durch std::vector
ersetzen,
sortiert sie nach Bedarf (und möglicherweise mit std::set
und
Einfügung, um sie vor der Einführung sortiert zu halten) oder zu verwenden
std::vector
.
res_set.begin()
kann aus zwei Gründen nicht als Ausgabeargument von set_intersection
verwendet werden:
Stattdessen möchten Sie ein insert_iterator
, um die neuen Elemente in die Menge einzufügen:
Tags und Links c++ stl set-intersection