vector mit pair ... war noch nicht fertig !!



  • Ups !! Hab aus Vesehen zu früh verschickt ...Also nochmal im Ganzen:

    Habe ein Problem mit einem Vector, der als Inhalt ein pair hat.
    Das pair besteht aus einem String und einem Vector mit Strings :

    typedef std::vector<std::string> TVector;
    typedef std::vector<std::pair<std::string,TVector> > TResultSet;
    

    Ich benötige eine Methode, die nach einem Eintrag in dem Vector sucht
    und mir einen Iterator darauf zurückgibt. Etwa so :

    TResultSet::iterator findInResultSet(CValueOwner::TResultSet& resultSet, std::string str)
    {
     for(TResultSet::iterator i = resultSet.begin(); i != resultSet.end(); ++i)
     {
       std::string first = (*i).first;
       if(first == str)
    	break;
     }
     return i;
    }
    

    Wenn ich diese jetzt aufrufe und den Iterator abfrage, steigt das Programm aus :

    TResultSet::iterator resultsetIter = findInResultSet(resultSet, insertStr);
    	if(resultsetIter == resultSet.end())
               //hier steigt er aus
    

    Hat jemand einen Tip ??
    Danke

    Andi



  • Hallo,

    TResultSet::iterator resultsetIter = findInResultSet(resultSet, insertStr);
        if(resultsetIter == resultSet.end())
               //hier steigt er aus
    

    ich nehme mal an, dass du innerhalb des if-Blocks auf resultsetIter zugreifst.
    Schau dir die if-Bedingung nochmal genau an. Ich denke du solltest hier auf
    ungleichheit Pruefen, denn wenn resultSetIter == resultSet.end(), dan zeigt
    resultsetIter auf das Element _hinter_ dem letzten in resultSet, sprich an eine
    Adresse, auf die du nicht zugreifen darfst.

    mfg
    v R


Anmelden zum Antworten