Wrapping von Containern
-
Hi,
immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.
Erste Frage: Ist das überhaupt eine gute Idee?
Das ganze passiert öfters. Ich dachte, es muss doch in Boost ein Klassentemplate geben, dass das erledigen kann, oder?
Also einfach ableiten und die Methoden und der Container werden bereitgestellt. Mithilfe von verschiedenen Template-Parametern kann man dann den Zugriff festlegen.
-
...
-
Für Random-Access-Container wenn du nur read access erlauben willst:
class SonesLazyClass: public boost::iterator_range<SonesContainer::const_iterator>{};//edit am EInfachsten aber:
class SonesLazyClass{ public: SonesContainer& sonesContainer(); };
-
Sone schrieb:
immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.
lol
-
volkard schrieb:
Sone schrieb:
immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.
lol
*sigh*
Volkard kannst du bitte aufhör'n?
Du willst doch dein Image als Anfängerhelfer pushen.otze schrieb:
Für Random-Access-Container wenn du nur read access erlauben willst:
class SonesLazyClass: public boost::iterator_range<SonesContainer::const_iterator>{};Ahh, stimmt, das kannte ich - hab ich aber wieder vergessen. Ich wusste da war was. Jup, so sollte das sein - vielen Dank!
-
vergiss aber nicht, dass Veränderungen des containers die range invalidieren können.
-
Sone schrieb:
volkard schrieb:
Sone schrieb:
immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.
lol
*sigh*
Volkard kannst du bitte aufhör'n?
Du willst doch dein Image als Anfängerhelfer pushen.Denk dran, daß
class vector_der_sich_sortieren_kannnicht gilt, weil man sowas mit externen algorithmen dranflanscht,
und dassclass vector_der_sich_am_ende_seber_speichertnicht nötig ist, weil das der Besitzer ebenso kann,
und dassfor(auto& insasse:meinPorsche)vollkommender Schwachsinn ist, weil der Mascinenbauer denkt for(auto& zahnrad:meinPorsche).
Und dann schreib auf, warum Du *immer wieder* sowas brauchst, Du wirst selber lachen müssen.