dynamisch allokieren
-
a) Wieso sollte er das nicht wollen?
b) würde er es nicht wollen, würde er dann nicht selbst nach einer Alternative fragen?
-
@Helium: unique funktioniert nur auf sortierten ranges.
MfG Jester
-
Jein. Also, du hast recht, das in meinem Beispiel sortiert werden müsste, aber ellgemein ist die Aussage falsch, jenachdem, was erreicht werden soll:
1,1,5,5,3,3,3,3,8,8 -> unique -> 1,5,3,8
Aber hier der verbesserte Code:
vector<int> zahlen; copy (istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(zahlen)); sort (zahlen.begin(), zahlen.end()); vector<int>::iterator ende = unique (zahlen.begin(), zahlen.end()); copy (zahlen.begin(), ende, ostream_iterato<int>(cout, " "));
-
Warum nicht einfach std::set verwenden, das von sich aus keine Dubletten akzeptiert.
(War´s set? Jedenfalls gibt es in der STL einen passenden Container :))
-
Gute Frage
-
Moment, jetzt bin ich mir aber unsicher:
[cpp]
set<int> zahlen;copy (istream_iterator<int>(cin), istream_iterator<int>(), inserter(zahlen, zahlen.begin()));
copy (zahlen.begin(), zahlen.end(), ostream_iterator<int>(cout, " "));
[/cpp]Ist das so richtig? ich hab bis jetzt erlich gesagt nur front- und back_insert-Iteratoren verwendet.
/edit: es fehlte ein 'r'
-
Ja, funktioniert doch auch?! Oder war das ne rhetorische Frage?!
-
Das war eigentlich erst gemeint. Ich hatte keine Möglichkeit zu testen. Jetzt hatte ich die Gelegenheit. Ja, schein zu gehen. Darf man nicht mal ein wenig unsicher sein?
-
Doch, aber durch einen Test wärst du ja selbst drauf gekommen. Kann ja kein Mensch riechen, dass du das nicht testen konntest....
-
Ich schätze mal 95% des Codes, den ich hier poste ist nicht getestet.
'insert_iterator'en brauchen ja einen weiteren Iterator; normalerweise wird vor diesen Iterator eingefügt. Das hat mich eben verunsichert.