iterator ->* -Operator?
-
Hallo,
kann man irgendwie einen ->* -Operator für iteratoren überladen?
Das ganze bräuchte ich, weil ich habe eine Liste von Pointern auf einer Klasse.
Wenn ich diese nun durchiteriere, ist es doof, immer per (*iter)->foo() auf die Elemente zuzugreifen...
Schöner wäre hier iter->*foo() oder?
-
Dieser Operator ist eigentlich nicht dafür da. Siehe Operatorüberladungs-Artikel.
Was hindert dich daran, wie bei den Boost Pointer-Containers direkt den Zeiger zu dereferenzieren? Oder geht es dir um die Anwendung bei bereits vorhandenen Iteratoren?
-
hallo,
ja es geht mir um die vorhandenen iteratoren.
ich habe den abschnitt zu dem operator gelesen, aber irgendwie nicht wirklich verstanden. was wird jetzt wie dereferenziert?
-
(*iter)->foo() passt schon.
->* ist ein gänzlich anderer Operator, da geht's um Member-Pointer.
-
wir hatten her irgendwo im Forum mal über einen Pointer-Iteratr bzw. DereferencingIterator disktutiert. Das wäre dann ein Wrapper für normale Iteratoren und dessen op-> dereferenziert nicht nur den Iterator sondern auch den Pointer gleich mit.
-
Am Ende der Disukssion ist IIRC rausgekommen, dass die Boost sowas eh schon fertig hat:
http://www.boost.org/doc/libs/1_39_0/libs/iterator/doc/transform_iterator.html
-
Hm, meint ihr das? Hier ging es zwar um einen Cast-Iterator, aber das Prinzip bleibt das Gleiche:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-245401.html
-
Nö, es gab einen Thread wo es wirklich um einen "dereferenzierenden Iterator" ging.