Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * \file: hetero_store.hpp
- *
- */
- #ifndef HETEROSTORE_HPP
- #define HETEROSTORE_HPP
- #include <iostream>
- #include <stdexcept>
- template <typename TIPUS,size_t meret=100,class EX=std::out_of_range>
- class HeteroStore{
- /// Ez nem JÓ!!!
- TIPUS *adat; /// Pointereket kell tárplni tehát: TIPUS **adat;
- /// azoban a méret fix, kár kínlódni dinamukus memmóriával --> TIPUS* adat[meret]
- size_t most;
- public:
- HeteroStore(){
- adat=new TIPUS[meret]; /// new TIPUS*[meret], ld. fent
- most=0;
- };
- ~HeteroStore(){
- /// előtte minden tárolt pointerre kell egy delete mert már a tároló felel az benne levőkért !
- delete[] adat;
- }
- size_t size(){return most;};
- size_t capacity(){return meret;};
- void add(TIPUS *p){
- if(meret!=most){ /// merat <= most biztonságosabb
- adat[most]=*p; /// pointert tárolunk ! Ha nem pointrt tárol, akor csak az alapozstály marad! SZELETELŐDÉS
- delete p; /// Naaaa! Ez igy nem tároló, hanem megsemmisítő
- p=NULL; /// p lokális mindjárt megszúnik! Mi értelme ?
- most++;
- }
- else{
- delete p;
- p=NULL; /// p lokális
- throw EX("Hiba");
- };
- };
- void clear(){
- delete[] adat; /// otthon, amikor kiviszi a szemetet, a kukát is kidobja?
- //adat=new TIPUS[meret];
- adat=NULL;
- most=0;
- }
- template<class Func>
- void traverse(Func func){
- for(size_t i=0;i<most;i++){
- func(&adat[i]); /// mahdnem jó csak a & felesleges
- }
- }
- /////////////////////////////////////////////////////// Ennyi /////////////////////////////////////////
- // std::for_each(adat.begin(),adat.end(),func);
- /* for(size_t i=0;i<most;i++){
- func(&adat[i]);*/
- /*
- Func forEach(TIPUS first, TIPUS last, Func func) {
- while(first != last)
- func(*first++);
- return func; }*/
- };
- #endif // HETEROSTORE_HPP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement