[gelöst] Element aus QStringList entfernen - Wie?

Alles rund um die Programmierung mit Qt
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Ob du es glaubst oder nicht, wenn ich ein Problem habe, schaue ich zuerst in die Qt-Doku, die mir meistens hilft und DANN, wenn nix geholfen hat, poste ich hier im Forum.

Meine bisherigen Probs waren NICHT durch die Doku zu lösen.

Btw: Mein letzter themenrelevanter Post hier wurde noch NICHT beantwortet :P

Könntest DU mal bitte beim Thema bleiben ;)

Hier, zur Hilfe:
Saiyaman hat geschrieben:

Code: Alles auswählen

			QStringList::iterator it = itsLocalPathList.begin();
			it += i;
			itsLocalPathList.remove(it);
Ich pack das nich. Warum geht das nun so und nich so?

Code: Alles auswählen

itsLocalPathList.remove(itsLocalPathList.begin() + i);
MfG
MfG
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Du befragst vorher den Iterator, also eine Einzelposition in der Liste, die addiert werden kann, wohin dein anderer Lösungsweg nicht funktioniert.

Der Grund: Es gibt keinen + operator, der wie =+ n Schritte nach vorne geht.
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Asoooo. Das leuchtet ein. Ich bin ein großer Fan von Vektorlisten, aber die Funktion at(i); hab ich noch nich benutzt, was eigentlich dumm ist, denn das dürfte schneller sein als .begin() + i , was ja mit normalen vektorlisten funzt.

MfG
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also da du die Position ja sowieso kennst, ist at sicherlich mit Abstand die einfachste Lösung. Wie genau at arbeitet weiß ich nicht, ich denke aber mal die gehen dabei auch über Iteratoren und brechen die Schleife einfach an Position i ab.

Du könntest sonst nur noch versuchen einen operator+( iterator, int steps ) selbst zu basteln. Wobei eine StringList den operator [] noch bereitstellt, womit man als statt .at( pos ) gleich [ pos ] nehmen kann, da kommt das gleiche Ergebnis bei raus.
Antworten