Das Ausgabeargument für %code% muss veränderbar sein %Code%. Die Iteratoren von %code% unterstützen niemals Mutationen, da sich der Wert eines Elements ändern könnte, wo es hingehört der Satz. Funktionen in der Gruppe mit %code% sind entworfen um an sortierten Sequenzen zu arbeiten, z.B. %Code%.
In Ihrem Fall können Sie entweder %code% durch %code% ersetzen, sortiert sie nach Bedarf (und möglicherweise mit %code% und Einfügung, um sie vor der Einführung sortiert zu halten) oder zu verwenden %code% .
Der letzte Parameter sollte ein Ausgabe-Iterator sein. In Ihrem Fall ist es nicht, noch mehr, es ist unveränderlich (bc.% Co_de% hat unveränderliche Elemente). Sie sollten stattdessen einen insert_iterator verwenden:
%Vor%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)
%code% kann aus zwei Gründen nicht als Ausgabeargument von %code% verwendet werden:
Stattdessen möchten Sie ein %code% , um die neuen Elemente in die Menge einzufügen:
%Vor%