Kontener typu set - zbiór
Stronę tą wyświetlono już: 13749 razy
Wstęp
Klasa set dostępna po załączeniu pliku nagłówkowego set jest kontenerem umożliwiającym przechowywanie zbiorów, czyli danych, które nie mogą się powtarzać. Dodanie do takiego kontenera elementu, który już istnieje jest nie możliwe. Zbiory przydają się do określenia liczebności unikalnych elementów zawartych w jakiejś tablicy oraz określenia zbioru tych elementów. Dla przykładu niech istnieje sobie pewna tablica danych:
Dodanie ich do obiektu klasy set spowoduje, że następujące elementy w sposób posortowany będą w niej zawarte:
Wiedza o liczebności elementów zbioru danych umożliwia np. zastosowanie algorytmu sortowania przez zliczanie, który jest opłacalny w zastosowaniu, gdy liczebność zbioru jest mała a liczebność sortowanych danych bazujących na elementach zbioru jest duża.
Dodawanie elementów do obiektu klasy set jest spowolnione przez proces równoczesnego sortowania danych. Od standardu C++ 11 dostępna jest klasa unordered_set, która nie sortuje elementów zbioru podczas ich dodawania.
Konstruktory klasy set
Standardowo klasa set ma konstruktor bezparametrowy i kopiujący:
Możliwe jest zdefiniowanie własnego typu obsługującego porównywanie elementów przechowywanych przez obiekt klasy set:
Wynik działania powyższego kodu:
second first
Można również do sortowania elementów użyć funkcji:
Istnieje również konstruktor umożliwiający skopiowanie zakresu elementów zbioru:
Iterowanie po elementach klasy set
Standardowo iterowanie odbywa się w następujący sposób:
Wynik działania:
0 20 30 40 100
Dodawanie i usuwanie elementów klasy set
Dodawanie kolejnych elementów można wykonywać za pomocą metody insert:
natomiast do usunięcia elementu z obiektu klasy set konieczne jest metody erase:
Wynik działania powyższego kodu:
20
Możliwe jest również usunięcie wszystkich elementów obiektu klasy set za pomocą metody clear.
Zamiana elementów dwóch obiektów klasy set
Za pomocą metody swap elementy dwóch obiektów klasy set mogą zostać zamienione miejscami. Oto przykład:
Wynik działania powyższego kodu:
object set before swap operation: 0 20 30 40 100 object set2 before swap operation: 0 20 100 object set after swap operation: 0 20 100 object set2 after swap operation: 0 20 30 40 100
Znajdowanie wskaźnika na element zawarty w obiekcie klasy set oraz sprawdzanie, czy element istnieje
Za pomocą metody find można uzyskać wskaźnik na szukany element w obiekcie klasy set. Metoda ta zwraca wskaźnik na koniec gdy element nie zostanie odnaleziony. W celu sprawdzenia, czy element istnieje można posłużyć się również metodą count, która zwraca 1, gdy element istnieje a 0 w przeciwnym przypadku.
Liczba elementów zawartych w obiekcie klasy set oraz sprawdzanie, czy obiekt nie ma elementów
Liczebność elementów obiektu klasy set można uzyskać za pomocą metody size, natomiast metodą empty można uzyskać informację o tym, czy obiekt nie zawiera żadnych elementów.
Tytuł:
C++ Zbiór zadań z rozwiązaniami
Autor:
Tomasz Jaśniewski
Tytuł:
Mikrokontrolery dla hobbystów. Projekty DIY w języku C i C++
Autor:
Miguel Angel Garcia-Ruiz, Pedro Cesar Santana Mancilla
Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski
Tytuł:
Wprowadzenie do C++
Autor:
Michał Matlak
Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz
Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha
Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams
Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis
Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół
Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz