Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <iostream>
- using namespace std;
- //tg: @runningcherry
- template <typename T>
- class SimpleVector {
- public:
- SimpleVector () : size (0), capacity (0) {
- data = nullptr;
- }
- explicit SimpleVector (size_t size_) : size (size_), capacity (size_) {
- data = new T[capacity];
- }
- ~SimpleVector () {
- delete[] data;
- }
- T& operator[] (const size_t index) {
- return data[index];
- }
- T* begin () {
- return data;
- }
- T* end () {
- return data + size;
- }
- const T* begin () const {
- return data;
- }
- const T* end () const {
- return data + size;
- }
- void PushBack (const T& value) {
- if (size == capacity) {
- capacity <<= 1u;
- if (capacity == 0) capacity = 1;
- T* new_data = new T[capacity];
- for (size_t i = 0; i < size; ++i) new_data[i] = data[i];
- delete[] data;
- data = new_data;
- }
- data[size] = value;
- ++size;
- }
- size_t Size () const {
- return size;
- }
- size_t Capacity () const {
- return capacity;
- }
- private:
- T* data;
- size_t size, capacity;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement