Iterowanie po zbiorze
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 39 z 56.
Skoro potrafisz już dodawać elementy do zbioru, sprawdzać je i usuwać, nauczmy się iterować po wszystkich elementach zbioru. Pętla for oparta na zakresie to najczytelniejszy sposób odwiedzenia każdego elementu.
Oto jak iterować po zbiorze:
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}Najważniejszą cechą, o której warto pamiętać, jest to, że zbiory automatycznie zachowują posortowaną kolejność. Gdy iterujesz po zbiorze owoców powyżej, wynikiem będzie "apple", "banana", "cherry" — a nie kolejność, w jakiej je wstawiono. To automatyczne sortowanie jest jedną z kluczowych zalet korzystania z std::set.
Ta posortowana iteracja sprawia, że zbiory świetnie nadają się do wyświetlania danych w kolejności alfabetycznej lub numerycznej bez konieczności ręcznego sortowania. Niezależnie od tego, czy pracujesz z liczbami, ciągami znaków, czy innymi porównywalnymi typami, zbiór zawsze przedstawi je w ich naturalnej, posortowanej kolejności.
Wyzwanie
ŁatwyUtwórz program demonstrujący funkcję automatycznego sortowania w std::set poprzez dodawanie słów do zbioru, a następnie iterowanie po nich, aby wyświetlić je w kolejności alfabetycznej. To wyzwanie sprawdzi, czy rozumiesz pętle for oparte na zakresie w przypadku zbiorów oraz sposób, w jaki zbiory zachowują posortowaną kolejność.
Dane wejściowe będą zawierać:
- Liczbę całkowitą
noznaczającą liczbę słów do dodania do zbioru - Następnie
nciągów znaków reprezentujących słowa, które należy wstawić do zbioru
Twój program powinien:
- Utworzyć pusty
std::set<std::string> - Wczytać liczbę słów do dodania
- Użyć pętli, aby wczytać każde słowo i wstawić je do zbioru za pomocą metody
.insert() - Użyć pętli for opartej na zakresie, aby iterować po zbiorze i wyświetlić każde słowo
- Po wyświetleniu wszystkich słów podać łączną liczbę unikalnych słów w zbiorze
Użyj dokładnie następującego formatu wyjściowego:
Dla każdego słowa w zbiorze (w kolejności alfabetycznej):
[word]Podsumowanie na końcu:
Total unique words: [count]Użyj pętli for opartej na zakresie o składni for (const std::string& word : wordSet), aby iterować po wszystkich elementach zbioru. Zbiór automatycznie wyświetli słowa w kolejności alfabetycznej, demonstrując jedną z kluczowych zalet korzystania z std::set. Pamiętaj, że jeśli w danych wejściowych pojawią się powtarzające się słowa, zbiór automatycznie je zignoruje, więc wyświetlone zostaną tylko unikalne słowa.
Spróbuj swoich sił
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
// Wczytaj liczbę słów
int n;
cin >> n;
// Utwórz pusty zbiór do przechowywania słów
set<string> wordSet;
// TODO: Napisz tutaj swój kod
// Wczytaj n słów i dodaj je do zbioru
// Użyj pętli for opartej na zakresie, aby przejść przez zbiór i wypisać każde słowo
// Wypisz łączną liczbę unikalnych słów
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