#include <vector>
#include <algorithm> // Find.
#include <iostream>

struct Wert
{
    int zahl1;
    int zahl2;
    float zahl3;
    
    // Den Vergleichsoperator implementieren damit ein Wert mit einer Zahl
    // verglichen werden kann.
    bool operator==(int zahl)
    {
        return zahl1 == zahl;
    }
};

int main()
{
    using namespace std;
    
    // Vector füllen.
    vector<Wert> werte;
    werte.push_back({ 1, 10, 12.4f });
    werte.push_back({ 2, 17, 13.7f });
    werte.push_back({ 3, 18, 1.008f });
    werte.push_back({ 4, 12, -0.4f });
    werte.push_back({ 5, 555, 100.9f });
    
    // Nach dem Wert 5 suchen.
    // Find nutzt den Vergleichsoperator, weswegen wir den implementieren mussten.
    auto iterator = find(werte.begin(), werte.end(), 5);
    if(iterator != werte.end())
    {
        cout << "Wie erwartet existiert ein Wert mit zahl1=5 und zahl2="
            << iterator->zahl2 << " und zahl3=" << iterator->zahl3 << '\n';
    }
    else
    {
        cout << "Unerwarteterweise existiert kein Wert mit zahl1=5\n";
    }
    
    // Nach dem Wert 6 suchen.
    auto iterator2 = find(werte.begin(), werte.end(), 6);
    if(iterator2 != werte.end())
    {
        cout << "Unerwarteterweise existiert ein Wert mit zahl1=6\n";
    }
    else
    {
        cout << "Wie erwartet existiert kein Wert mit zahl1=6\n";
    }
}