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);