Problem mit not2 (STL)



  • Hallo,

    ich wollte zur Übung ein Programm schreiben,das sowohl ein Adapter für Funktionszeiger (ptr_fun) als auch ein Negativierer (not2) und ein Binder(bind2nd) verwendet.
    Das Programm soll einfach alle Zahlen ausgeben,die sich ohne Rest durch 5 Teilen lassen.
    Da remove_copy_if aber nur die Zahlen ausgibt, für die für die diese Bedinngung NICHT zutrifft, wollte ich einach not2 nehmen.
    Das Funktioniert aber nicht. Ohne not2 lässt es sich ohne Probleme kompilieren aber gibt halt nur die Zahlen aus, die sich NICHT durch 5 Teilen lassen.

    Ich hoffe mir kann jemand sagen warum not2 nicht funktioniert.

    Danke

    #include <iostream>
    #include <functional>
    #include <algorithm>
    using namespace std;
    
    bool OhneRestTeilbar(int Zahl,int Divisor)
    {
    	return (Zahl%Divisor == 0);
    };
    
    int main(int argc,char** argv)
    {
    	int Array[] = {5,6,7,8,9,10,11,12,13,14,15};
    
    	remove_copy_if(Array,
    				   Array+10,
    				   ostream_iterator<int>(cout," "),
    				   not2( bind2nd( ptr_fun(OhneRestTeilbar), 5)  )
    				   );
    
    	getchar();
    	return 0;
    };
    

  • Mod

    not2 ist für binäre Funktionen, du benötigst not1, da das Funktionsobjekt, dass bind2nd zurückgibt, ein unäres ist.



  • Danke!
    Ich hab grad nicht daran gedacht,dass bind2nd ein zweistelliges Funktionsobjekt zu einem einstelligen macht^^ 💡


Anmelden zum Antworten