vector<T> joinen
-
und wie mache ich es dann einfacher, zwei unsortiete Container aneinanderzuhängen?
-
Auf die Schnelle,eventuell geht es noch einfacher:
#include <iostream> #include <algorithm> #include <vector> int main() { const std::vector<int> v1 {3,4,1,5}; const std::vector<int> v2 {2,4,5,1,6,7}; const std::vector<int> v3 = ([&v1,&v2]()->std::vector<int> { std::vector<int> result; std::set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),std::back_inserter(result)); std::sort(result.begin(),result.end()); auto new_end = std::unique(result.begin(),result.end()); return std::vector<int>(result.begin(),new_end); })(); std::for_each(v3.begin(),v3.end(),[](int i) { std::cout << i << ' ';}); return 0; }
-
einwurf schrieb:
Auf die Schnelle,eventuell geht es noch einfacher:
...set_union erfordert bereits sortierte Eingangssequenzen. Das Sortieren muss also ggf. bereits vorher durchgeführt werden.
-
Ich brauche weder Sortieren noch Unique.
-
So:
#include <vector> #include <set> int main() { std::vector<float> const v1(...); std::vector<float> const v2(...); std::set<float> union_set; union_set.insert(v1.begin(), v1.end()); union_set.insert(v2.begin(), v2.end()); //wenn es denn ein const vector sein muss... std::vector<float> const union_vector(union_set.begin(), union_set.end()); //fertig }
-
Michael E. schrieb:
Das ist leider nur eine maximal umständliche Version, zwei Container hintereinanderzuhängen.
Sie ist vielleicht umständlich, aber wenigstens cool.
Michael E. schrieb:
Mit der sortierten Vereinigung hat das gar nichts zu tun.
Er hat nie was von sortierter Vereinigung gesagt, folglich ist das genau das erfragte.
-
314159265358979 schrieb:
Er hat nie was von sortierter Vereinigung gesagt, folglich ist das genau das erfragte.
In einer Vereinigung gibt es keine Doubletten, ob sie nun sortiert ist, oder nicht.
-
314159265358979 schrieb:
Er hat nie was von sortierter Vereinigung gesagt, folglich ist das genau das erfragte.
Constructs a sorted range beginning in the location pointed by result with the set union of the two sorted ranges [first1,last1) and [first2,last2) as content.
bluber22 schrieb:
Ja, das meine ich.
-
Na gut, ausnahmsweise. Mein Iterator ist trotzdem cooler als irgendein Algorithmus!

-
Aber .. ?
Ich brauche weder Sortieren noch Unique.
-
Warum geht folgendes nicht?
template <typename ListType> inline ListType append(const ListType& v1, const ListType& v2) { ListType result; set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(result)); return result; }