Menu
Coddy logo textTech

Tworzenie zbioru i dodawanie elementów

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 36 z 56.

Skoro już wiesz, czym jest zbiór, nauczmy się, jak go utworzyć i dodawać do niego elementy. Aby dodać elementy do std::set, użyj metody .insert().

Oto jak utworzyć pusty zbiór i dodać do niego elementy:

std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);

Najważniejszą cechą zbiorów jest to, że automatycznie odrzucają duplikaty. Jeśli spróbujesz wstawić tę samą wartość dwa razy, zbiór pozostanie bez zmian:

numbers.insert(5);  // To nie doda kolejnej liczby 5
numbers.insert(5);  // To również jej nie doda

Po tych wszystkich wstawieniach twój zbiór będzie zawierał tylko trzy unikalne elementy: 2, 5 i 8 (automatycznie posortowane). Próby wstawienia 5 ponownie są po prostu ignorowane, co właśnie sprawia, że zbiory są tak przydatne do przechowywania kolekcji unikalnych danych.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który demonstruje funkcję przechowywania unikalnych elementów przez std::set, dodając do zbioru kilka liczb całkowitych, w tym wartości powtarzające się, a następnie wyświetlając jego końcowy rozmiar, aby pokazać, że duplikaty są automatycznie ignorowane.

Dane wejściowe będą obejmować:

  • Liczbę całkowitą n oznaczającą liczbę liczb całkowitych do wstawienia
  • Następnie n liczb całkowitych do wstawienia do zbioru

Twój program powinien:

  1. Utworzyć pusty std::set<int>
  2. Wczytać liczbę liczb całkowitych do wstawienia
  3. Użyć pętli, aby wczytać każdą liczbę całkowitą i wstawić ją do zbioru za pomocą metody .insert()
  4. Po wszystkich wstawieniach wypisać końcowy rozmiar zbioru za pomocą metody .size()
  5. Wypisać komunikat pokazujący, ile prób wstawienia duplikatów zostało zignorowanych

Użyj następującego dokładnego formatu wyjściowego:

Set size: [final_size]
Duplicates ignored: [number_of_duplicates]

Liczbę zignorowanych duplikatów należy obliczyć jako różnicę między łączną liczbą prób wstawienia a końcowym rozmiarem zbioru. Pokazuje to, że zbiory automatycznie zachowują unikalność, odrzucając powtarzające się wartości — to ich kluczowa cecha przy przechowywaniu kolekcji unikalnych elementów.

Spróbuj swoich sił

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

int main() {
    // Wczytaj liczbę liczb całkowitych do wstawienia
    int n;
    cin >> n;
    
    // Utwórz pusty zbiór
    set<int> mySet;
    
    // TODO: Napisz tutaj swój kod
    // Użyj pętli, aby wczytać n liczb całkowitych i wstawić je do zbioru
    // Oblicz, ile duplikatów zostało zignorowanych
    
    // Wyświetl wyniki
    cout << "Set size: " << mySet.size() << endl;
    cout << "Duplicates ignored: " << /* oblicz liczbę duplikatów */ << endl;
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online