funktion,die in enem vector eine const Zahl findet
-
geschaft.
danke-))
-
@facell:
Scott Meyers Effective STL Item 43: Prefer algorithm calls to hand-written loops.
Soll heißen, du sollst die Standard-Algorithmen nutzen wenn möglich und in deinem Beispiel ist das mehr als möglich. Das hat diverse Gründe warum man das machen sollte:
Scott Meyers Effective STL Item 43 Page 182 schrieb:
Efficiency: Algorithms are often more efficient than the loops programmers produce.
Correctness: Writing loops is more subject to errors than is calling algorithms.
Maintainability: Algorithm calls often yield code that is clearer and more straightforward than the corresponding explicit loops.Ich persönlich würde noch "Flexibility" mit aufnehmen.
Dein Code ist wenig flexibel, im Gegenteil er ist beschränkt aufstd::vector<person>.Und das was du dort versucht hast selbst zu schreiben kann man auch ohne Probleme auf die STL adaptieren:
#include <iostream> #include <iterator> #include <vector> #include <string> #include <algorithm> #include <tr1/functional> struct Person { std::string name; int age; unsigned int number; }; struct PersonYearEquals : public std::binary_function<Person,int ,bool> { bool operator() (const Person& p, const int year) const { return p.age == year; } }; int main() { using namespace std::tr1::placeholders; std::vector<Person> persons; std::vector<Person>::const_iterator iter; // fill your persons.... // search for a person with a specific year iter = std::find_if(persons.begin(),persons.end(),std::tr1::bind(PersonYearEquals(), _1, 2 )); if(iter != persons.end()) { // person was found } }Ich persönlich finde es immer besser wenn man vorhanden Möglichkeiten auch nutzt.
-
binary_function ist deprecated. bind ist mittlerweile in std::
-
314159265358979 schrieb:
binary_function ist deprecated. bind ist mittlerweile in std::
Wenn nicht mit binary_function wie würdest du es dann machen?
Das mit bind im std hat bei mir nicht kompiliert deshalb bin ich wieder auf die tr1 Variante ausgewichen.Ich bin auf jeden Fall auf deinen Alternativvorschlag gespannt.
-
- <functional> includen
- einfach von gar nix ableiten, wozu auch.
-
314159265358979 schrieb:
- einfach von gar nix ableiten, wozu auch.
Hier merkt man eindeutig das du dich noch nicht mit den Effective C++ Bücher von Scott Meyers beschäftigt hast, das ableiten macht hier sehr wohl Sinn. Aber den herauszufinden, überlass ich mal dir

-
Ich habe Effective C++ gelesen und nun extra für dich nachgesehen: Funktionsobjekte werden gerade mal einen Absatz lang im Anhang angerissen.
-
allows other parts of the STL implementation to ask compile-time questions of the function object.
-
In seinem Beispiel ist das Erben hochgradig sinnlos da std::bind sowieso wieder alles platt macht.
-
314159265358979 schrieb:
Ich habe Effective C++ gelesen und nun extra für dich nachgesehen: Funktionsobjekte werden gerade mal einen Absatz lang im Anhang angerissen.
Also ich weiß ja nicht welches Effective C++ Buch zu gelesen hast, aber ich meine das Effective STL. In diesem wird ein ganzes Kapitel lang bearbeitet.
Du solltest die Qualität eines Textes nicht anhand seiner Länge ausmachen, man kann auch viele Informationen in wenig Text verpacken.
Dennoch empfehle ich dir, nimm dir das Kapitel aus Effective STL einmal vor und dann kannst du hier gerne nochmal Antworten.Hab noch nie so viel geballte Arroganz verknüpft mit Unwissenheit auf einem Haufen gesehen

-
Firefighter schrieb:
Also ich weiß ja nicht welches Effective C++ Buch zu gelesen hast, aber ich meine das Effective STL. In diesem wird ein ganzes Kapitel lang bearbeitet.
Dann schreib das auch hin.
Firefighter schrieb:
Du solltest die Qualität eines Textes nicht anhand seiner Länge ausmachen, man kann auch viele Informationen in wenig Text verpacken.
Steht da nicht drin, Schlaumeier.
Firefighter schrieb:
Dennoch empfehle ich dir, nimm dir das Kapitel aus Effective STL einmal vor
Wenn du mir das Buch als .pdf gibts, gerne.
Firefighter schrieb:
und dann kannst du hier gerne nochmal Antworten.
Ich werde weiterhin antworten, ob's dir passt, oder nicht.
Firefighter schrieb:
Hab noch nie so viel geballte Arroganz verknüpft mit Unwissenheit auf einem Haufen gesehen

Kann ich so nur zurückgeben.
-
Jop Entschuldigung das ich nicht gleich das korrekt Buch erwähnt hatte, mein Fehler.
Worum es mir eigentlich ging ist das hier in dem Forum generell immer nach Fehlern bei Lösungen gesucht wird, anstatt selbst auch mal eine Lösung zu posten. Ich hab ja nichts gegen Konstruktive Kritik aber was von dir kam war einfach wieder nur ein Hinweisen auf eine schlechte Lösung ohne eine bessere zu präsentieren und das nervt hier gewaltig.
-
unnötig schrieb:
allows other parts of the STL implementation to ask compile-time questions of the function object.
Würde man mit C++11 und SFINAE auch all die Antworten finden können?
Falls ja, erwarte ich, daß die stl-Implementierung das leistet (oder bald leistet) und ich doch nicht erben muß.