手打vector
  • 板块学术版
  • 楼主hero_brine
  • 当前回复28
  • 已保存回复28
  • 发布时间2020/4/27 21:52
  • 上次更新2023/11/7 03:49:46
查看原帖
手打vector
312489
hero_brine楼主2020/4/27 21:52
#include <bits/stdc++.h>
using namespace std;
template<typename T>class myvector{
    private:
        int maxn=100,sizenow=0;
        T * item = new T[maxn];
        void update() {
            maxn *= 2;
            T * copied = new T[maxn];
            for (register int i=0;i<sizenow;i++)
                copied[i] = item[i];
            delete[] item;
            item = new T[maxn];
            for (register int i=0;i<sizenow;i++)  item[i] = copied[i];
            delete[] copied;
        }
    public:
        void push_back(const T& item0) {
            if (sizenow==maxn-1)   update();
            item[sizenow] = item0;
            ++ sizenow;
        }
        void del(const int& pos) {
            T end = item[sizenow-1];
            sizenow--;
            if (pos==sizenow-1) return;
            for (register int i=pos;i<sizenow-1;i++){
                item[i] = item[i+1];
            }
            item[sizenow-1] = end;
        }
        void pop_back() const {del(sizenow-1);}
        void clear() {
            maxn = 100;
            delete[] item;
            item = new T[maxn];
        }
        void print() {
            for (register int i=0;i<sizenow;i++){
                cout<<item[i]<<" ";
            }
            cout<<endl;
        }
        bool accuratefind(const int& starto,const int& endo,const T& item0) const {
            for (int i=starto;i<sizenow;i++){
                if (item[i]==item0) return true;
            }
            return false;
        }
        bool find(const T& item0) const {
            return accuratefind(0,sizenow,item0);
        }
        T * begin() const {T * res = &item[0];return res;}
        T * end() const {T * res = &item[sizenow-1];return res;}
        int size()  const {return sizenow;}
        T operator [] (const int& n) const {
            return this->item[n];
        }
};

push_back和随机访问中快于std::vector,请各位大佬提出改进建议

2020/4/27 21:52
加载中...