Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <cstdlib>
- // Реализуйте шаблон SimpleVector
- template <typename T>
- class SimpleVector {
- public:
- SimpleVector() {
- data = nullptr;
- end_ = nullptr;
- current = nullptr;
- }
- explicit SimpleVector(size_t size) {
- data = new T[size];
- current = data;
- end_ = data + size;
- }
- ~SimpleVector() {
- delete[] data;
- }
- T& operator[](size_t index) {
- return *(data + index);
- }
- T* begin() {
- return (data);
- }
- T* end() {
- return (end_);
- }
- size_t Size() const {
- return (end_ - data);
- }
- size_t Capacity() const {
- return (end_ - data);
- }
- void PushBack(const T& value) {
- if (Capacity() == 0) { //first elem
- data = new T[1];
- end_ = data + 1;
- *data = value;
- } else {
- if (Size() == Capacity()) {
- size_t i = 0;
- current = new T[2 * Capacity()];
- while (data != end_) {
- *current++ = *data++;
- i++; //count elements
- }
- data -= i; //move to the beginning
- delete[] data; //remove old data
- data = current - i; //move pointers to the new memory area
- end_ = current;
- }
- data[Size()] = value;
- end_++;
- }
- }
- private:
- T *data;
- T *end_;
- T *current;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement