Ce face std::set_union
std::set_union scrie la destinație, sortat, fiecare element care apare în primul sau în al doilea interval. Un element comun apare o singură dată. Dacă un element apare de m ori în primul și de n ori în al doilea, în rezultat apare de max(m, n) ori.
Spre deosebire de std::merge, care păstrează toate elementele, reuniunea nu dublează elementele comune. Sursele trebuie să fie sortate.
Parametri
| Parametru | Descriere |
|---|---|
first1, last1 |
Primul interval sortat. |
first2, last2 |
Al doilea interval sortat. |
d_first |
Destinația. |
Ce returnează
Iterator după ultimul element scris.
Exemple
Exemplul 1: Cursuri alese de doi studenți
#include <algorithm>
#include <iterator>
#include <print>
#include <set>
#include <string>
#include <vector>
int main() {
std::set<std::string> ana{"Algebră", "Fizică", "Informatică"};
std::set<std::string> ion{"Chimie", "Fizică", "Informatică"};
std::vector<std::string> toate;
std::set_union(ana.begin(), ana.end(), ion.begin(), ion.end(), std::back_inserter(toate));
std::println("{}", toate);
}
Rezultat
["Algebră", "Chimie", "Fizică", "Informatică"]
Exemplul 2: Merge față de set_union
#include <algorithm>
#include <iterator>
#include <print>
#include <vector>
int main() {
std::vector<int> a{1, 2, 3};
std::vector<int> b{2, 3, 4};
std::vector<int> m;
std::vector<int> u;
std::ranges::merge(a, b, std::back_inserter(m));
std::ranges::set_union(a, b, std::back_inserter(u));
std::println("merge: {}", m);
std::println("set_union: {}", u);
}
Rezultat
merge: [1, 2, 2, 3, 3, 4]
set_union: [1, 2, 3, 4]
Greșeli frecvente
- Scrii rezultatul într-un
std::setcuset.begin()ca destinație: nu compilează. Foloseștestd::inserter(s, s.end()).
Comenzi înrudite
std::set_intersection: Calculează intersecția a două intervale sortate: elementele care apar în ambele.std::set_difference: Calculează diferența a două intervale sortate: elementele din primul care nu apar în al doilea.std::merge: Combină două intervale sortate într-un singur interval sortat, păstrând toate elementele.std::includes: Verifică dacă toate elementele unui interval sortat se află și în alt interval sortat (submulțime).