Sollte ich bei std::string auch Iteratoren benutzen?
-
Abend,
ich benutze für alle Container der STL Iteratoren. Sollte ich das auch für std::string machen?D.h. wenn ich auf ein beliebiges Element zugreifen will, dass ich dann
string str = "110"; str.begin()[2] = '2';schreibe?
Danke im Voraus.
-
Gugelmoser schrieb:
Sollte ich das auch für std::string machen?
Ja.
Gugelmoser schrieb:
D.h. wenn ich auf ein beliebiges Element zugreifen will, dass ich dann
string str = "110"; str.begin()[2] = '2';schreibe?
Argh nein, blos nicht!! Was denkst du denn, wozu die den operator[] überladen haben? Damit du dir den Zugriff über Iteratoren holst? Und mach das bitte auch nicht bei vector etc.
Wenn eine Klasse einen operator[] hat, sollte man den auch nutzen. Das oben ist eine ganz schlechte Idee.
Iteratoren willst du, wenn du auch irgendwie iterieren willst. Für Elementzugriff ist der operator[] da, und den kannst du auch ruhig nutzen.
-
cooky451 schrieb:
Iteratoren willst du, wenn du auch irgendwie iterieren willst.
Ok, macht Sinn. Dann benutzt man Iteratoren also nur, wenn einen alle Elemente des Containers interessieren. Interessiert einen nur ein spezielles Element, nimmt man [] bzw. at().
-
Gugelmoser schrieb:
Ok, macht Sinn. Dann benutzt man Iteratoren also nur, wenn einen alle Elemente des Containers interessieren.
Es müssen nicht unbedingt alle sein, aber wenn du eben einfach auf ein bestimmtest Element zugreifen willst, dann nimm operator[].