zoukankan      html  css  js  c++  java
  • c++vector简单实现

    const  int DEFAULT_CAP = 3;
    
    template <typename T>
    class vector {
        //
        int capacity;
        T* _data;
        int _size;
        
    public:
        //const
        vector ():capacity(DEFAULT_CAP),_size(0),_data(new T[capacity]){};
        
        vector(vector& v):capacity(v.cap()),_size(v.size()),_data(new T[capacity]) {
            memcpy(_data, v._data, _size*sizeof(T));
        }
        vector(vector&& v):capacity(v.cap()),_size(v.size()) {
            _size = v.getdata();
            v._data = nullptr;
        }
        //deconst
        virtual ~vector(){ delete [] _data;}
        //operator
        vector& operator=(const vector &v) {
            /*
            if(this != &v){
                delete [] _data;
                _size = v.size();
                capacity = v.cap();
                _data = new T[capacity];
                memcpy(_data, v._data, _size*sizeof(T));
            }*/
            sw(v);
            return *this;
        }
        T& operator[](int i) const{
            return _data[i];
        }
        //retrun
        int size() const {return _size;}
        int cap() const {return capacity;}
        const int getdata() const noexcept {_data;}
        //function
        void expand() {
            if(_size == capacity){
                capacity = capacity<<1;
            T *old = _data;
            _data = new T[capacity];
            memcpy(_data, old, _size*sizeof(T));
            delete [] old;
            }
        }
        void push_back(T const& temp) {
            expand();
            _data[_size++] = temp;
        }
        void each(){
            for (int i = 0; i < _size; ++i) {
                cout<<_data[i]<<endl;
            }
        }
        void sw(vector& v) {
            swap(_size, v._size);
            swap(capacity, v.capcity);
            swap(_data, v._data);
        }
    };

  • 相关阅读:
    2019.6.30 Spring注解 bean后置处理器和属性赋值
    2019.6.29 Spring注解-Bean的注册
    2019.6.28 Spring注解
    boost基础环境搭建
    动态规划入门一:钢条切割问题
    《剑指offer》读书笔记
    字符串的全排列
    西山居递归面试题
    常见的数据结构
    832. Flipping an Image
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7218597.html
Copyright © 2011-2022 走看看