Вперед Зміст

Приклад 1

Дано дві множини. Знайти числа, які є в обох множинах (перетин)

Код програми:

#include <iostream>
#include <iterator>
#include <algorithm>
#include <set>
using namespace std;

int main() {
    setlocale(0, "");  // Для підтримки української мови
    
    // Ініціалізація множин
    set<int> a = {1, 2, 3, 4, 5};
    set<int> b = {3, 4, 5, 6, 7};
    set<int> intersection;  // Для зберігання перетину
    
    // Знаходження перетину множин
    set_intersection(a.begin(), a.end(),
                    b.begin(), b.end(),
                    inserter(intersection, intersection.begin()));
    
    // Виведення результату
    cout << "Перетин множин: ";
    for (int x : intersection) {
        cout << x << " ";
    }
    cout << endl;
    
    return 0;
}

Пояснення роботи програми:

  1. Ініціалізація множин: Дві множини a і b ініціалізуються заданими значеннями.
  2. Знаходження перетину: Використовується алгоритм set_intersection з STL:
    • Приймає ітератори на початок і кінець обох множин
    • Використовує inserter для додавання результатів у множину intersection
  3. Виведення результату: Елементи перетину виводяться у відсортованому порядку.

Приклад роботи програми:


Перетин множин: 3 4 5 

Ключові особливості:

Приклад 2

Дано дві множини. Знайти числа, які є хоча б в одній множині (об'єднання)

Код програми:

#include <iostream>
#include <iterator>
#include <algorithm>
#include <set>
using namespace std;

int main() {
    setlocale(0, "");  // Для підтримки української мови
    
    // Ініціалізація множин
    set<int> a = {1, 2, 3, 4, 5};
    set<int> b = {3, 4, 5, 6, 7};
    set<int> union_set;  // Для зберігання об'єднання
    
    // Знаходження об'єднання множин
    set_union(a.begin(), a.end(),
              b.begin(), b.end(),
              inserter(union_set, union_set.begin()));
    
    // Виведення результату
    cout << "Об'єднання множин: ";
    for (int x : union_set) {
        cout << x << " ";
    }
    cout << endl;
    
    return 0;
}

Пояснення роботи програми:

  1. Ініціалізація множин: Дві множини a і b ініціалізуються заданими значеннями.
  2. Знаходження об'єднання: Використовується алгоритм set_union з STL:
    • Приймає ітератори на початок і кінець обох множин
    • Використовує inserter для додавання результатів у множину union_set
    • Автоматично видаляє дублікати
  3. Виведення результату: Елементи об'єднання виводяться у відсортованому порядку.

Приклад роботи програми:


Об'єднання множин: 1 2 3 4 5 6 7 

Ключові особливості:

Приклад 3

Дано дві множини. Знайти числа, які є у першій множині, але немає в другій (віднімання).

Код програми:

#include <iostream>
#include <iterator>
#include <algorithm>
#include <set>
using namespace std;

int main() {
    setlocale(0, "");  // Для підтримки української мови
    
    // Ініціалізація множин
    set<int> a = {1, 2, 3, 4, 5};
    set<int> b = {3, 4, 5, 6, 7};
    set<int> difference;  // Для зберігання різниці
    
    // Знаходження різниці множин a - b
    set_difference(a.begin(), a.end(),
                  b.begin(), b.end(),
                  inserter(difference, difference.begin()));
    
    // Виведення результату
    cout << "Різниця множин a - b: ";
    for (int x : difference) {
        cout << x << " ";
    }
    cout << endl;
    
    return 0;
}

Пояснення роботи програми:

  1. Ініціалізація множин: Дві множини a і b ініціалізуються заданими значеннями.
  2. Знаходження різниці: Використовується алгоритм set_difference з STL:
    • Приймає ітератори на початок і кінець обох множин
    • Використовує inserter для додавання результатів у множину difference
    • Знаходить елементи, які є в першій множині, але відсутні в другій
  3. Виведення результату: Елементи різниці виводяться у відсортованому порядку.

Приклад роботи програми:


Різниця множин a - b: 1 2 

Ключові особливості:

Приклад 4

Дано дві множини. Знайти їх симетричну різницю.

Код програми:

#include <iostream>
#include <iterator>
#include <algorithm>
#include <set>
using namespace std;

int main() {
    setlocale(0, "");  // Для підтримки української мови
    
    // Ініціалізація множин
    set<int> a = {1, 2, 3, 4, 5};
    set<int> b = {3, 4, 5, 6, 7};
    set<int> sym_diff;  // Для зберігання симетричної різниці
    
    // Знаходження симетричної різниці множин
    set_symmetric_difference(a.begin(), a.end(),
                           b.begin(), b.end(),
                           inserter(sym_diff, sym_diff.begin()));
    
    // Виведення результату
    cout << "\nСиметрична різниця множин: ";
    for (int x : sym_diff) {
        cout << x << " ";
    }
    cout << endl;
    
    return 0;
}

Пояснення роботи програми:

  1. Ініціалізація множин: Дві множини a і b ініціалізуються заданими значеннями.
  2. Знаходження симетричної різниці: Використовується алгоритм set_symmetric_difference з STL:
    • Приймає ітератори на початок і кінець обох множин
    • Використовує inserter для додавання результатів у множину sym_diff
    • Знаходить елементи, які є тільки в одній з множин
  3. Виведення результату: Елементи симетричної різниці виводяться у відсортованому порядку.

Приклад роботи програми:


Симетрична різниця множин: 1 2 6 7 

Ключові особливості:

Вперед Зміст