Advertisement
Guest User

Untitled

a guest
Apr 27th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2. * \file: hetero_store.hpp
  3. *
  4. */
  5.  
  6. #ifndef HETEROSTORE_HPP
  7. #define HETEROSTORE_HPP
  8.  
  9. #include <iostream>
  10. #include <stdexcept>
  11.  
  12.  
  13. template <typename TIPUS,size_t meret=100,class EX=std::out_of_range>
  14. class HeteroStore{
  15. /// Ez nem JÓ!!!
  16. TIPUS *adat; /// Pointereket kell tárplni tehát: TIPUS **adat;
  17. /// azoban a méret fix, kár kínlódni dinamukus memmóriával --> TIPUS* adat[meret]
  18. size_t most;
  19.  
  20. public:
  21. HeteroStore(){
  22. adat=new TIPUS[meret]; /// new TIPUS*[meret], ld. fent
  23. most=0;
  24. };
  25.  
  26. ~HeteroStore(){
  27. /// előtte minden tárolt pointerre kell egy delete mert már a tároló felel az benne levőkért !
  28. delete[] adat;
  29. }
  30.  
  31.  
  32. size_t size(){return most;};
  33. size_t capacity(){return meret;};
  34.  
  35.  
  36. void add(TIPUS *p){
  37. if(meret!=most){ /// merat <= most biztonságosabb
  38. adat[most]=*p; /// pointert tárolunk ! Ha nem pointrt tárol, akor csak az alapozstály marad! SZELETELŐDÉS
  39. delete p; /// Naaaa! Ez igy nem tároló, hanem megsemmisítő
  40. p=NULL; /// p lokális mindjárt megszúnik! Mi értelme ?
  41. most++;
  42. }
  43. else{
  44. delete p;
  45. p=NULL; /// p lokális
  46. throw EX("Hiba");
  47. };
  48.  
  49. };
  50. void clear(){
  51. delete[] adat; /// otthon, amikor kiviszi a szemetet, a kukát is kidobja?
  52. //adat=new TIPUS[meret];
  53. adat=NULL;
  54. most=0;
  55. }
  56.  
  57. template<class Func>
  58. void traverse(Func func){
  59. for(size_t i=0;i<most;i++){
  60. func(&adat[i]); /// mahdnem jó csak a & felesleges
  61. }
  62.  
  63.  
  64.  
  65. }
  66. /////////////////////////////////////////////////////// Ennyi /////////////////////////////////////////
  67. // std::for_each(adat.begin(),adat.end(),func);
  68.  
  69. /* for(size_t i=0;i<most;i++){
  70. func(&adat[i]);*/
  71.  
  72. /*
  73. Func forEach(TIPUS first, TIPUS last, Func func) {
  74. while(first != last)
  75. func(*first++);
  76. return func; }*/
  77.  
  78.  
  79.  
  80.  
  81. };
  82.  
  83.  
  84.  
  85.  
  86. #endif // HETEROSTORE_HPP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement