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 ??
DankeAndi
-
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