C++ STL Set und Multiset
Einführung in C++ STL assoziative Container mit Set und Multiset Container, zum schnellen suchen, einfügen und löschen von Elementen.
Set und Multiset sind assoziative Container der STL (Standard Template Library). Sie dienen zum schnellen suchen löschen und einfügen von Einträgen.
Set- und Multiset-Container werden hierbei den Elementen entsprechend sortiert (im Gegensatz zu Map und Multimap, welche nach Schlüssel sortiert werden).
Set und Multiset unterscheiden sich in der Tatsache, dass in einem Set-Container jedes Element nur einmal (ein Key besitzt genau ein Value) - und bei einem Multiset-Container ein und das Selbe Element auch mehrmals vorkommen darf (ein Key darf mehrere Values besitzen). Würde man also die Zahlen von 1-100 in einem Set speichern, darf jede Zahl nur einmal vorkommen. Würde wir es in einem Multimap speichern, dürfte die 100 beispielsweise auch mehrmals vorkommen.
#include <set> // Beispiel eines Set-Containers int main() { // Feld anlegen und mit Daten füllen const int size = 10; int arr[size] = {9,4,1,4,3,4,5,6,7,9}; // Set s mit Feld arr initialisiert set<int> s(arr, arr + size); // Set über Iterator-Zugriff ausgeben set<int>::iterator it; for (it = s.begin(); it != s.end(); it++) cout << *it << ", "; return 0; }
#include <set> // Beispiel eines Multiset-Containers int main() { // Feld anlegen und mit Daten füllen const int size = 10; int arr[size] = {9,4,1,4,3,4,5,6,7,9}; // Multiset m mit Feld arr initialisiert multiset<int> m(arr, arr + size); // Multiset m über Iterator-Zugriff ausgeben multiset<int>::iterator it_m; for (it_m = m.begin(); it_m != m.end(); it_m++) cout << *it_m << ", "; // Alle Vorkommen von 4 in m suchen pair<multiset<int>::iterator,multiset<int>::iterator> it_pair; it_pair = m.equal_range(4); for (it_m = it_pair.first; it_m != it_pair.second; it_m++) cout << *it_m << ", "; // Alle Vorkommen von 4 bis auf eines löschen m.erase(++it_pair.first,it_pair.second); for (it_m = m.begin(); it_m != m.end(); it_m++) cout << *it_m << ", "; return 0; }
