Hallo,
ich möchte eine Reihe von strings vergleichen die in dem selben vektor gespeichert sind. Mein bisheriger Ansatz sieht folgend aus:
Bei PersStruct handelt es sich um eine Struktur, verglichen wird der darin enthaltene std::string question.
Die Zeile "Catalogs[activeCatalog].PersStruct.erase(I)" verursacht nun den Absturz und ich weis leider nicht warum. Ich übergebe den Iterator der aktuellen Position in der ersten Schleife. Zusätzlich wird der eraseCounter (int) genau dann erhöht wenn der vergleich fehlt schlägt und nicht wenn sie identisch sind.
Würde das Program also nicht sowieso abstürzen löscht er alle Elemente außer den wirklich doppelten
. "I->question.compare(J->question) == 0" schaut im Bezug auf die compare Funktion für mich richtig aus.
Bin für jeden Hinweis dankbar..
ich möchte eine Reihe von strings vergleichen die in dem selben vektor gespeichert sind. Mein bisheriger Ansatz sieht folgend aus:
Code:
vector<PersStruct>::iterator I = Catalogs[activeCatalog].PersStruct.begin();
int eraseCounter = 0;
while(I != Catalogs[activeCatalog].PersStruct.end()) {
for(vector<PersStruct>::iterator J = Catalogs[activeCatalog].PersStruct.begin(); J != Catalogs[activeCatalog].PersStruct.end(); ++J) {
if(I->question.compare(J->question) == 0) {
Catalogs[activeCatalog].PersStruct.erase(I);
eraseCounter++;
}
}
++I;
}
Bei PersStruct handelt es sich um eine Struktur, verglichen wird der darin enthaltene std::string question.
Die Zeile "Catalogs[activeCatalog].PersStruct.erase(I)" verursacht nun den Absturz und ich weis leider nicht warum. Ich übergebe den Iterator der aktuellen Position in der ersten Schleife. Zusätzlich wird der eraseCounter (int) genau dann erhöht wenn der vergleich fehlt schlägt und nicht wenn sie identisch sind.
Würde das Program also nicht sowieso abstürzen löscht er alle Elemente außer den wirklich doppelten
![Frown :( :(](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f641.png)
Bin für jeden Hinweis dankbar..