Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <vector>
- #include <cassert>
- #include <cstdio>
- #include <map>
- #include <cmath>
- #include <cstdlib>
- using namespace std;
- template <typename T>
- class SimpleVector {
- public:
- SimpleVector(): _cap(0), _sz(0), _data(nullptr) {}
- explicit SimpleVector(size_t size): _sz(size), _cap(size) {
- _data = (T*)malloc(sizeof(T) * _cap);
- if (_cap != 0) {
- cout << "ory pizda" << endl;
- for (T *x = _data; x != _data + _cap; x++) {
- cout << "kekos" << endl;
- *x = T();
- cout << "memos" << endl;
- }
- cout << "abrikos" << endl;
- }
- }
- ~SimpleVector() {
- for (size_t i = 0; i < _cap; i++)
- _data[i].~T();
- free(_data);
- }
- T& operator[](size_t index) { return _data[index]; }
- T* begin() { return _data; }
- T* end() { return _data + _sz; }
- size_t Size() const { return _sz; }
- size_t Capacity() const { return _cap; }
- void PushBack(const T& value) {
- if (_cap == _sz) {
- size_t _new_cap = (_cap == 0) ? 1 : (_cap << 1);
- reserve(_new_cap);
- }
- _data[_sz++] = value;
- }
- void reserve(size_t _new_cap) {
- if (_new_cap <= _cap)
- return;
- _data = (T*)realloc(_data, sizeof(T) * _new_cap);
- for (size_t i = _cap; i < _new_cap; i++)
- _data[i] = T();
- _cap = _new_cap;
- }
- private:
- T *_data;
- size_t _sz, _cap;
- };
- int main() {
- //assert(freopen("input.txt", "r", stdin));
- //assert(freopen("output.txt", "w", stdout));
- SimpleVector<string> v(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement