Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <cassert>
  5. #include <cstdio>
  6. #include <map>
  7. #include <cmath>
  8. #include <cstdlib>
  9.  
  10. using namespace std;
  11.  
  12. template <typename T>
  13. class SimpleVector {
  14. public:
  15.   SimpleVector(): _cap(0), _sz(0), _data(nullptr) {}
  16.  
  17.   explicit SimpleVector(size_t size): _sz(size), _cap(size) {
  18.       _data = (T*)malloc(sizeof(T) * _cap);
  19.       if (_cap != 0) {
  20.         cout << "ory pizda" << endl;
  21.           for (T *x = _data; x != _data + _cap; x++) {
  22.               cout << "kekos" << endl;
  23.             *x = T();
  24.             cout << "memos" << endl;
  25.           }
  26.           cout << "abrikos" << endl;
  27.       }
  28.   }
  29.  
  30.   ~SimpleVector() {
  31.       for (size_t i = 0; i < _cap; i++)
  32.         _data[i].~T();
  33.       free(_data);
  34.   }
  35.  
  36.   T& operator[](size_t index) { return _data[index]; }
  37.  
  38.   T* begin() { return _data; }
  39.  
  40.   T* end() { return _data + _sz; }
  41.  
  42.   size_t Size() const { return _sz; }
  43.  
  44.   size_t Capacity() const { return _cap; }
  45.  
  46.   void PushBack(const T& value) {
  47.       if (_cap == _sz) {
  48.           size_t _new_cap = (_cap == 0) ? 1 : (_cap << 1);
  49.           reserve(_new_cap);
  50.       }
  51.       _data[_sz++] = value;
  52.   }
  53.  
  54.   void reserve(size_t _new_cap) {
  55.       if (_new_cap <= _cap)
  56.         return;
  57.       _data = (T*)realloc(_data, sizeof(T) * _new_cap);
  58.       for (size_t i = _cap; i < _new_cap; i++)
  59.         _data[i] = T();
  60.       _cap = _new_cap;
  61.   }
  62.  
  63. private:
  64.     T *_data;
  65.     size_t _sz, _cap;
  66. };
  67.  
  68. int main() {
  69.     //assert(freopen("input.txt", "r", stdin));
  70.     //assert(freopen("output.txt", "w", stdout));
  71.    
  72.     SimpleVector<string> v(1);
  73.    
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement