Giriş
Açıklaması şöyle.
Elimizde şöyle bir kod olsun. a dizisi sıralıdır ancak b dizisi sıralı değildir. Bu yüzden çıktı olarak boş bir şey alırız.
İki tane vector'ü çift elemanları atarak birleştirmek için şöyle yaparız.
Açıklaması şöyle.
Aynı eleman her iki kümede de varsa açıklaması şöyle.Constructs a sorted union beginning at d_first consisting of the set of elements present in one or both sorted ranges [first1,last1) and [first2,last2).
set_union is an algorithm that produces a set of elements from both sets. For the elements appearing in intersection, it always picks them from the 1st set, not 2nd set.Açıklaması şöyle.
The algorithm std::set_union requires ordered sequences.Örnek
Elimizde şöyle bir kod olsun. a dizisi sıralıdır ancak b dizisi sıralı değildir. Bu yüzden çıktı olarak boş bir şey alırız.
std::vector<std::string> a = {"a","b"};
std::vector<std::string> b = {"d","c"};
std::vector<std::string> c;
std::set_union(a.begin(),a.end(),b.begin(),b.end(),c.begin());
Düzeltmek için şöyle yaparızstd::vector<std::string> a = { "a", "b" };
std::vector<std::string> b = { "d", "c" };
std::vector<std::string> c;
std::set_union( std::begin( a ), std::end( a ),
std::rbegin( b ), std::rend( b ),
std::back_inserter( c ) );
Çıktı olarak şunu alırız.a b c d
Örnekİki tane vector'ü çift elemanları atarak birleştirmek için şöyle yaparız.
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
int main()
{
std::vector<int> v1 = {1, 2, 3, 4, 5};
std::vector<int> v2 = { 3, 4, 5, 6, 7};
std::vector<int> dest1;
std::set_union(v1.begin(), v1.end(),
v2.begin(), v2.end(),
std::back_inserter(dest1));
for (const auto &i : dest1) {
std::cout << i << ' ';
}
std::cout << '\n';
}
Çıktı olarak şunu alırız.Output: 1 2 3 4 5 6 7
Diğer
Eğer std::set_union() kullanmak için diziyi sıralamak istemiyorsak şöyle yaparız
Eğer std::set_union() kullanmak için diziyi sıralamak istemiyorsak şöyle yaparız
std::vector<std::string> a = { "a", "b" };
std::vector<std::string> b = { "d", "c", "a" };
std::vector<std::string> c( a );
c.insert( std::end( c ), std::begin( b ), std::end( b ) );
std::sort( std::begin( c ), std::end( c ) );
c.erase( std::unique( std::begin( c ), std::end( c ) ), std::end( c ) );
Çıktı olarak şunu alırız.a b c d
Hiç yorum yok:
Yorum Gönder