fujitsufan
Erfahrenes Mitglied
Hallo,
wie kann ich in einer Vektortabelle nach Einträgen suchen.
Bei Vektortabellen vom Typ "string" ist dies ja noch easy.
Wie stelle ich dies an wenn eine Vektortabelle folgenden Typs ist?
Ich möchte nach dem Eintrag ->cSelText = "Eintrag3" suchen damit ich den Wert "300" zur Verfügung habe.
Da wo sich das ? befindet müsste doch eine Binärfunktion hinterlegt werden.
Ich wende solch eine Binäfunktion auch bei der Funktion "sort( , , ); an
Beispiel:
Kann wir jemend bei der Funktion "find( , , ); weiterhelfen.
Eine for Schleife geht auch, weiß ich.
Bläht aber meine Code unschön auf.
Vielen Dank!
fujitsufan
wie kann ich in einer Vektortabelle nach Einträgen suchen.
Bei Vektortabellen vom Typ "string" ist dies ja noch easy.
Code:
vector <string> vList;
vList.pusch_back("Eintrag1")
vList.pusch_back("Eintrag2")
vList.pusch_back("Eintrag3")
if(find(vList.begin(), vList.end(), "Eintrag2") != vList.end())
{
//Eintrag gefunden
}
Wie stelle ich dies an wenn eine Vektortabelle folgenden Typs ist?
Code:
typedef struct tAttrCtrl
{
char cSelText[42];
char cAttrNo[8];
}tAttrCtrl;
vector <tAttrCtrl> vMerker;
tAttrCtrl sAttrCtrl;
vMerker.clear();
strcpy(sAttrCtrl.cAttrNo, "100");
strcpy(sAttrCtrl.cSelText, "Eintrag1");
vMerker.push_back(sAttrCtrl);
strcpy(sAttrCtrl.cAttrNo, "200");
strcpy(sAttrCtrl.cSelText, "Eintrag2");
vMerker.push_back(sAttrCtrl);
strcpy(sAttrCtrl.cAttrNo, "300");
strcpy(sAttrCtrl.cSelText, "Eintrag3");
vMerker.push_back(sAttrCtrl);
Ich möchte nach dem Eintrag ->cSelText = "Eintrag3" suchen damit ich den Wert "300" zur Verfügung habe.
Code:
find(vMerker.begin(), vMerker.end(), ?)
{
//Eintrag gefunden
}
Da wo sich das ? befindet müsste doch eine Binärfunktion hinterlegt werden.
Ich wende solch eine Binäfunktion auch bei der Funktion "sort( , , ); an
Beispiel:
Code:
typedef struct tElemSubIniSek
{
vector <int> vElemNr;
char cSubIniType[8];
char ElementSubIniSektion[128];
char ControlText[41];
vector <tElemPos> vElemPos;
}tElemSubIniSek;
vector <tElemSubIniSek> vElementSubIniSektion;
struct GreaterY2IniSekPos : public std::binary_function<tElemSubIniSek, tElemSubIniSek, bool>
{
bool operator()( const tElemSubIniSek &s1, const tElemSubIniSek &s2 ) const
{
return s1.vElemPos[0].dPosY > s2.vElemPos[0].dPosY;
}
};
sort(vElementSubIniSektion.begin(), vElementSubIniSektion.end(), GreaterY2IniSekPos());
Kann wir jemend bei der Funktion "find( , , ); weiterhelfen.
Eine for Schleife geht auch, weiß ich.
Bläht aber meine Code unschön auf.
Vielen Dank!
fujitsufan