Loresoft Software-Development
   
Hauptmenü
Artikel
Artikelsuche
 
Titel: C++ STL Set und Multiset
Beschreibung: Einführung in C++ STL assoziative Container mit Set und Multiset Container, zum schnellen suchen, einfügen und löschen von Elementen.
Kategorie: Programmierung
Unterkategorie STL
Benötigtes Fachwissen: Fortgeschrittene
 
Artikel überarbeiten: C++ STL Set und Multiset
 
Hat Ihnen die Seite weitergeholfen?
sehr gut sehr schlecht



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;
}
aktuelle Seitenaufbauzeit: 384.36 ms.