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 dodaPo 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.
Wyzwanie
ŁatwyUtwó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ą
noznaczającą liczbę liczb całkowitych do wstawienia - Następnie
nliczb całkowitych do wstawienia do zbioru
Twój program powinien:
- Utworzyć pusty
std::set<int> - Wczytać liczbę liczb całkowitych do wstawienia
- Użyć pętli, aby wczytać każdą liczbę całkowitą i wstawić ją do zbioru za pomocą metody
.insert() - Po wszystkich wstawieniach wypisać końcowy rozmiar zbioru za pomocą metody
.size() - 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;
}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
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadania6Zbiory (unikalne elementy)
Wprowadzenie do std::setTworzenie zbioru i dodawanie elementówSprawdzanie obecności elementówUsuwanie elementówIterowanie po zbiorzePodsumowanie — unikalne liczbyPoćwicz samodzielnie: Kompilator C++ online