Modernes C++ programmieren

Okt 23, 2024

lst-0805-book.cpp

// https://godbolt.org/z/qnove9h8o 
#include <unordered_set> // unordered_multiset
#include <vector>
#include <iostream>
using std::unordered_multiset; using std::cout; using std::ostream;
template<typename Elem>
ostream& operator<<=(ostream&os, const unordered_multiset<Elem>&data) {
    for(auto &e : data) { os << e << ' '; } return os << '\n'; }
int main() {
    // ohne Argumente
    unordered_multiset<int> leer(1000); // anfängliche Größe der Hashtabelle
    cout <<= leer;      // Ausgabe:
    // Initialisierungsliste; doppelte werden übernommen:
    unordered_multiset daten{ 1,1,2,2,3,3,4,4,5,5 };
    cout <<= daten;     // Ausgabe in etwa: 5 5 4 4 3 3 2 2 1 1
    // Kopie
    unordered_multiset kopie(daten);
    cout <<= kopie;     // Ausgabe in etwa: 5 5 4 4 3 3 2 2 1 1
    // Bereich
    std::vector in{1,2,3,10,20,30,10,20,30,1,2,3};
    unordered_multiset bereich(in.begin()+3, in.end()-3);
    cout <<= bereich;   // Ausgabe in etwa: 30 30 20 20 10 10
}