vector+lookup



  • Original erstellt von PeterTheMaster:
    **meinst du sowas, hume?

    bool LastIsStar = (*m_Pattern.rbegin() == '*') ? true : false;
    

    **

    ich denke er meint

    return *Pattern.rbegin()=='*';



  • also diese zeilen sind ja nun wirlich ueberhaupt nicht aequivalent. ich wollte nur sehen, was hume dazu sagt, weil das aus seinem dirstream ist.
    wo ich schon dabei bin, der FileSelector ist buggy. bei *.a sucht der einfach nach dem ersten punkt und haelt deshalb c.b.a fuer nicht passend.



  • @Peter
    Ich meinte genau das, was Shade gesagt hat. Schließlich ist in den Beispielen nirgends ein relevanter Seiteneffekt nötig.

    Und nur weil ich selbst zu dämlich fürs paraktische Programmieren bin, heißt das
    nicht, dass ich nicht *theoretisch* weiß wie man es besser machen kann. Es hilft also nicht und es beweist auch nichts, wenn du schlechten Code von mir postest, da ich nirgends behaupte mein Code wäre qualitativ hochwertig oder ein gutes Beispiel dem man folgenden sollte.
    Achso und natürlich wäre:

    bool LastIsStar = (*m_Pattern.rbegin() == '*');
    

    besser. Und abhängig vom Kontext (den ich jetzt nicht im Kopf habe) würde ich wohl völlig auf die Variable LastIsStar verzichten. Allein schon weil der Name nichts aussagt.

    wo ich schon dabei bin, der FileSelector ist buggy. bei *.a sucht der einfach nach dem ersten punkt und haelt deshalb c.b.a fuer nicht passend.

    Nicht der FileSelector ist buggy sondern die *gesamte* dirstream-Implementation. Aber der Code ist ja offen, du kannst ihn also jederzeit deinen Bedürfnissen anpassen.

    [ Dieser Beitrag wurde am 16.06.2003 um 13:34 Uhr von HumeSikkins editiert. ]



  • In den meisten Fällen passiert ja noch was zwischen dem Vergleich und dem return. Außerdem bin ich schlechter Theoretiker, sondern eher fürs Proaktische. Wenn ich hier im Forum poste, wie theoretisch etwas geht sind immer millionen von schwächen, etc. drin.



  • nur mal so aus interesse:

    geht es nicht wenn man sich mit nem
    map<content, bool> merkt ob es schon in den vector aufgenommen wurde oder nicht!? Man muesste natuerlich bei push auf true setzen und beim rausnehmen wieder auf false.

    gruss



  • Ja, das wäre eine Möglichkeit.
    Nur:
    Ich müsste dann ja wieder für die Map, wenn ich mich recht erinnere, schon wieder eine Vergleichsroutine implementieren, auf Basis derer festgelegt werden kann, wie die ContentObjekte in der sortierten Liste angeordnet werden sollen.
    ==> die Katze steht wieder auf den alten Beinden!

    Grüße,
    TS++

    [ Dieser Beitrag wurde am 16.06.2003 um 15:45 Uhr von TS++ editiert. ]



  • sehe ich das recht, daß du dinge mit == vergleichen willst, ohne nen operator == anzubieten?



  • In den meisten Fällen passiert ja noch was zwischen dem Vergleich und dem return.

    In solchen Fällen mag das was anderes sein, aber um solche Fälle ging es hier nicht. Zumindest sieht mir die Frage (samt Code) nicht danach aus.

    Außerdem bin ich schlechter Theoretiker, sondern eher fürs Proaktische.

    Und das heißt was? Nur weil man eher für das Praktische ist, heißt das ja nicht, dass alles theoretische irrelevant wird. Und nur weil du fürs praktische bist, wird meine Aussage nicht weniger richtig.
    Und das an meiner Aussage ausnahmsweise mal was wahres dran ist sieht man vielleicht daran, dass S. Dewhurst in seinem Buch "C++ Gotchas" in Item 7 hnliches bemerkt.

    Wenn ich hier im Forum poste, wie theoretisch etwas geht sind immer millionen von schwächen, etc. drin.

    Das Gefühl habe ich keinesfalls. Aber wenn dann mal was etwas unglcklich ist, darf man dann nicht mehr darauf hinweisen?



  • @Volkard:
    Ich wollte ja auch einfach nur wissen, ob noch eine andere Möglichkeit besteht festzulegen, wie in einem Vector archivierte ContentObjekte miteinander verglichen werden.( Aber du siehst ja, es läuft mittlerweilen eine ganz andere Diskussion im aktuellen Thread )
    Bei der HashMap von SGI gibt's ja auch die Möglichkeit beim Erzeugen der HashMap explizit den Typen eines Funktionsobjekts anzugeben, das einen überladenen Operator zu Vergleichszwecken enthält.

    Aber offensichtlich hab ich beim 'vector' zusammen mit 'find()' wirklich nur die eine Möglichkeit, in meinen ContentObjektKlassen den "=="-Operator zu überladen.

    Grüße,
    TS++



  • In den meisten Fällen passiert ja noch was zwischen dem Vergleich und dem return.

    In solchen Fällen mag das was anderes sein, aber um solche Fälle ging es hier nicht. Zumindest sieht mir die Frage (samt Code) nicht danach aus.

    Das ist eben die Macht der gewohnheit. Sorry. Ich versuch mich zu bessern.

    Außerdem bin ich schlechter Theoretiker, sondern eher fürs Proaktische.

    Und das heißt was? Nur weil man eher für das Praktische ist, heißt das ja nicht, dass alles theoretische irrelevant wird. Und nur weil du fürs praktische bist, wird meine Aussage nicht weniger richtig.
    Und das an meiner Aussage ausnahmsweise mal was wahres dran ist sieht man vielleicht daran, dass S. Dewhurst in seinem Buch "C++ Gotchas" in Item 7 hnliches bemerkt.

    Also das an deinen Aussagen etwas wahres dran ist ist sicherlich nicht die Ausnahme, sondern eher die Regel (bitte jetzt nicht das Sprichwort zitieren).

    Wenn ich hier im Forum poste, wie theoretisch etwas geht sind immer millionen von schwächen, etc. drin.

    Das Gefühl habe ich keinesfalls. Aber wenn dann mal was etwas unglcklich ist, darf man dann nicht mehr darauf hinweisen?

    Auch wenn es scheinbar nicht so rüberkommmt, lasse ich mich gerne kritisieren. Dafür komme ich doch grade in's Forum. Oh, und danke für die Belobigung.



  • Original erstellt von TS++:
    Aber offensichtlich hab ich beim 'vector' zusammen mit 'find()' wirklich nur die eine Möglichkeit, in meinen ContentObjektKlassen den "=="-Operator zu überladen.

    wenn du meinst...
    also vorher drängt sich ja noch ein find_if nebst prädikat, was ein komparator mit deinem suchobjekt gebunden ist.
    aber über so sachen rede ich nicht gerne.



  • Original erstellt von volkard:
    aber über so sachen rede ich nicht gerne.

    Aber warum denn nicht? Wir sind doch hier unter uns! 😉
    Immer raus damit!

    Grüße,
    TS++

    [ Dieser Beitrag wurde am 18.06.2003 um 08:17 Uhr von TS++ editiert. ]



  • etwa so:

    struct finder {
      bool operator()(const cType& content) {
        // dann hier eben mit dem entsprechenden Objekt vergleichen
      }
    };
    vector<cType>::iterator iter=find_if(vector.begin(),vector.end(),finder());
    

    Was ist daran schlecht, volkard?



  • Original erstellt von C14:
    Was ist daran schlecht, volkard?

    sogar eher ...,finder(toFind));
    ich sagte nicht, daß es schlecht ist.



  • Danke für eure Hilfe!
    "find_if" ist genau die Alternative nach der ich gesucht habe!

    Grüße,
    TS++

    [ Dieser Beitrag wurde am 18.06.2003 um 15:17 Uhr von TS++ editiert. ]


Anmelden zum Antworten