Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename T> class ArrayList {
- public:
- int capacity_;
- int size_;
- T* data_;
- ArrayList () : ArrayList(16) {}
- explicit ArrayList (int capacity) : capacity_(16), size_(0) {
- while (capacity > capacity_) {
- capacity_ *= 2;
- }
- data_ = new T[capacity_];
- }
- ArrayList<T> (const ArrayList<T> & that) : capacity_(that.capacity_), size_(that.size_) {
- data_ = new T[capacity_];
- memcpy(data_, that.data_, sizeof(T) * size_);
- }
- ArrayList<T> (const ArrayList<T>&& that) : capacity_(that.capacity_), size_(that.size_) {
- data_ = that.data_;
- that.data_ = nullptr;
- }
- ~ArrayList() {
- delete[] data_;
- }
- int size() const {
- return size_;
- }
- int capacity() const {
- return capacity_;
- }
- void add (T const& value) {
- if (size_ + 1 <= capacity_) {
- data_[size_] = value;
- ++size_;
- }
- else {
- capacity_ *= 2;
- T* newData_ = new T[capacity_];
- memcpy(newData_, data_, sizeof(T) * size_);
- delete[] data_;
- data_ = newData_;
- data_[size_] = value;
- ++size_;
- }
- }
- T* begin () {
- return data_;
- }
- T* end () {
- return data_ + size_;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement