Frage zu STL



  • Folgendes kleines Beispiel hab ich:

    #include <iostream> 
    #include <algorithm> 
    using namespace std; 
    
    bool istneun(int parameter) 
    { 
        return (parameter==9); 
    } 
    
    int main() 
    { 
    int zahlen[9] = {1,2,3,9,5,6,7,8,9}; 
    int *found; 
    
        found = find_if(zahlen, zahlen+9, istneun); 
        if (found!=zahlen+9) 
        { 
            cout << *found << " - " << endl; 
        } 
        else 
        { 
            cout << "nix" << endl; 
        } 
    }
    

    Hier wird auf den Wert ->9<- geprüft. WIE kann den zu prüfenden Wert an die Funktion als Paramter mitübergeben??? (beim Aufruf von istneun)



  • #include <iostream>
    #include <algorithm>
    using namespace std;
    
    struct ist{
       int zahl;
       ist(int z){
          zahl=z;
       }
       bool operator()(int parameter){
          return parameter==z;
       }
    };
    int main()
    {
    int zahlen[9] = {1,2,3,9,5,6,7,8,9};
    int *found;
    
        found = find_if(zahlen, zahlen+9, ist(9));
        if (found!=zahlen+9)
        {
            cout << *found << " - " << endl;
        }
        else
        {
            cout << "nix" << endl;
        }
    }
    


  • Vielen Dank!



  • Noch eine kleine Frage:

    Kann ich mir auch noch den INDEX zurückgeben lassen, an welcher Stelle der gefundene Wert innerhalb des Arrays steht? Wie geht das? Danke!



  • rewe schrieb:

    Noch eine kleine Frage:

    Kann ich mir auch noch den INDEX zurückgeben lassen, an welcher Stelle der gefundene Wert innerhalb des Arrays steht? Wie geht das? Danke!

    std::distance(zahlen, found);

    In deinem Fall hätte auch find anstatt find_if geholfen.



  • Ponto schrieb:

    rewe schrieb:

    Noch eine kleine Frage:

    Kann ich mir auch noch den INDEX zurückgeben lassen, an welcher Stelle der gefundene Wert innerhalb des Arrays steht? Wie geht das? Danke!

    std::distance(zahlen, found);

    In deinem Fall hätte auch find anstatt find_if geholfen.

    Danke! Wenns ich's mit find hinkriege, dann ändere ich das noch ab. Sollte ja einfacher sein.



  • found = std::find(zahlen, zahlen + 9, 9);
    

Anmelden zum Antworten