| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Delete helperharja 19.08.03 09:38 helper-template funktio deletelle
/* Esimerkki "delete-helperin" käytöstä * delete_helper auttaa objektien poistossa, jolloin sen voi * tehdä helposti iteraattorien läpi, esim for_each():lla * By Mikko Harju <maharj@utu.fi> */ #include <iostream> #include <vector> #include <algorithm> using std::vector; using std::cout; using std::for_each; using std::endl; template<class T> struct delete_helper { void operator()(T* ptr) { if(ptr != NULL) // Obsolete nykyisen standardin mukaan, varmuudeksi { delete ptr; ptr=NULL; } } }; class CObject { public: explicit CObject(int _t):t(_t) {} // vakio kopio, delete ja assignment-operaattori OK private: int t; }; int main() { vector<CObject*> vec; for(int i=0;i<100;i++) { CObject *obj=new CObject(i); vec.push_back(obj); } // luotujen objektien poisto käy helposti: for_each(vec.begin(), vec.end(), delete_helper<CObject>()); } ikkah 19:05 20.8.03 Ei ehkä maailman hyödyllisin pätkä mutta hyvin tehty. Paitsi että inlinet ja tuo ~CObject on turhia. Mutta muuten mukavasti käytetty STL:ää. harja 15:42 21.8.03 Jep, se oli siellä vaan kosmeettisena lisänä. Otin sen nyt pois, jos se ärsyttää jotakuta :-) inlinet oli siellä vaan selventämässä hommaa kääntäjälle, mutta samapa se tosiaan on, joten otin pois. |
![]() Haku
|